项目中:语音导览添加相关展品 字段:relactiveExhibitItem 长度 varchar2000

<div class="control-group">
<label class="control-label">相关展品:</label>
<div class="controls">
<input type="button" value="选择" id="itemIds" onclick="selectExhibitItem(this.id)" />
<div id="exhibitItemDiv" class="box" style="width:100%;font-size:14px;" >
<form:input type="hidden" id="itemIds_input" path="relactiveexhibititem" />
//由于实际字段值为:["90c720bc42b441328aae901a1f140bae","cafeab8fc5cd492698e9a5cbf39ebc87"],所以隐藏不显示             <form:input type="hidden" id="itemIds_name" path="relactiveexhibititemName" />
<ol id="itemIds_ol"></ol>
<script type="text/javascript">
// 相关作品的id集合
var itemIdList = ${hmlwxGuideVoices.relactiveexhibititem};
//
var itemNameList = '${hmlwxGuideVoices.relactiveexhibititemName}'.split(",");
if(itemIdList && itemIdList.length>0){

//为了动态的追加显示label
for(var i=0;i<itemIdList.length;i++){
var id=itemIdList[i];
var name = itemNameList[i];
var itemli = "<li id=itemIds_"+id+"><label style=\"max-width:100px;max-height:20px;_height:100px;border:0;padding:3px;\"/>"+name+"&nbsp;&nbsp;<a href=\"javascript:\" onclick=\"removeItems('itemIds_"+id+"','"+name+"');\">×</a></li>";
var $img = $(itemli);
$("#itemIds_ol").append($img);
}
}
</script>
</div>
</div>
</div>
//选择展品
function selectExhibitItem(id){
top.$.jBox.open("iframe:${ctx}/hmlwx/hmlwxExhibitItem/selectList","选择关联展品", 1000, 500, {
buttons:{"确定":"ok","关闭":"true"},
submit:function(v, h, f){
if (v=="ok"){
              //获取被选中的options 的标签
var chkItem = top.$("#jbox-iframe").contents().find('input:checkbox[name=chkItem]:checked');
var resIds="",resNames="";
var itemValue = $("#"+id+"_input").val();
alert("itemValue"+ itemValue);
var nameValue = $("#"+id+"_name").val();
alert("nameValue:"+ nameValue);
var isSelect = false;
chkItem.each(function (i) {
//alert($(this).val());
var idTemp = $(this).val();
alert("idTemp:"+ idTemp);
var nameTemp = $(this).parent().next().text();
alert("nameTemp:"+ nameTemp);
if(itemValue.indexOf(idTemp) == -1 ){
nameTemp = nameTemp.replace('\\s','').trim();
var itemli = "<li id=itemIds_"+idTemp+"><label style=\"max-width:100px;max-height:20px;_height:100px;border:0;padding:3px;\"/>"+nameTemp+"&nbsp;&nbsp;<a href=\"javascript:\" onclick=\"removeItems('itemIds_"+idTemp+"','"+nameTemp+"');\">×</a></li>";
var $img = $(itemli);
$("#itemIds_ol").append($img); if(itemValue =='[]' || itemValue=='')
itemValue = "[\""+idTemp+"\"]";
else
itemValue = itemValue.replace(",]",",\""+idTemp+"\"]").replace("]",",\""+idTemp+"\"]"); $("#"+id+"_input").val(itemValue);
if (nameValue == '' || (nameValue != '' && nameValue.indexOf(nameValue.length -1, nameValue.length)) == ",") {
nameValue += nameTemp;
} else {
nameValue += "," + nameTemp;
}
$("#"+id+"_name").val(nameValue);
resIds += "\"" + idTemp+"\",";
}
isSelect = true;
}); if(isSelect || (resIds!=null&&resIds.length>0)){
//转成json字符串
//$("#"+id+"_input").val("["+resIds.substr(0,resIds.length-1)+"]");
//$("#"+id+"_name").val(resNames.substr(0,resIds.length-1));
}else{
top.$.jBox.alert("未选择关联展品");
return false;
} }
}, loaded:function(h){
$(".jbox-content", top.document).css("overflow-y","hidden");
}
});
}

选择展品的jsp

<c:forEach items="${page.list}" var="hmlwxExhibitItem">
<tr>
<td><input type="checkbox" name="chkItem" value='${hmlwxExhibitItem.id}' class="select"/></td>
<td><a name="itemName" href="${ctx}/hmlwx/hmlwxExhibitItem/form?id=${hmlwxExhibitItem.id}&view=0">
${hmlwxExhibitItem.name}
</a></td>
<td>
${hmlwxExhibitItem.creationDate}
</td>
<td>
${hmlwxExhibitItem.spec}
</td>
<td>
${hmlwxExhibitItem.descr}
</td>
<td>
${hmlwxExhibitItem.createBy.name}
</td>
<td>
<fmt:formatDate value="${hmlwxExhibitItem.createDate}" pattern="yyyy-MM-dd"/>
</td>
</tr>
</c:forEach>

再看后台的controller中保存的方法、

@RequiresPermissions("hmlwx:hmlwxGuideVoices:view")
    @RequestMapping(value = "form")
    public String form(HmlwxGuideVoices hmlwxGuideVoices, Model model) {
        HmlwxGuideVoicesDTO hmlwxGuideVoicesDTO = new HmlwxGuideVoicesDTO();//扩展类 新增字段为关联作品的 名称集合字段         try {
            BeanUtils.copyProperties(hmlwxGuideVoicesDTO, hmlwxGuideVoices);
//对象的复制 把hmlwxGuideVoices 复制到 hmlwxGuideVoicesDTO 里
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
        // 查找展品相关数据
//判断 关联作品字段中是否有值
        if (StringUtils.isNotEmpty(hmlwxGuideVoices.getRelactiveexhibititem())
                && !StringUtils.equals(hmlwxGuideVoices.getRelactiveexhibititem(), "[]")) {
//若有值先转化为json对象            
JSONArray json = JSONArray.fromObject(hmlwxGuideVoices.getRelactiveexhibititem());
            String name = "";
            if (json.size() > 0) {
//根据作品 id 找到 Name 并 拼接成一个字符转 以,分隔
                for (int i = 0; i < json.size(); i++) {
                    HmlwxExhibitItem hmlwxExhibitItem = hmlwxExhibitItemService.get(json.getString(i));
                    name += hmlwxExhibitItem.getName() + ",";
                }
            }
            if (StringUtils.isNotEmpty(name)) {
//切掉最后一个,
                name = name.substring(0, name.length() - 1);
            }
            hmlwxGuideVoicesDTO.setRelactiveexhibititemName(name);
        }
        // 查找展厅相关数据
        if (StringUtils.isNotEmpty(hmlwxGuideVoices.getExhibitionRoomId())
                && !StringUtils.equals(hmlwxGuideVoices.getExhibitionRoomId(), "[]")) {
            String id = hmlwxGuideVoices.getExhibitionRoomId().replaceAll("\"", "").replace("[", "").replace("]", "");
            // 只有一个展厅
            HmlwxExhibitionRoom hmlwxExhibitionRoom = hmlwxExhibitionRoomService.get(id);
            hmlwxGuideVoicesDTO.setExhibitionRoomName(hmlwxExhibitionRoom.getName());
        }         model.addAttribute("hmlwxGuideVoices", hmlwxGuideVoicesDTO);
        return "modules/hmlwx/hmlwxGuideVoicesForm";
  

实现添加相关资源的弹出ifreame 并实现多选框的更多相关文章

  1. 手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法

    手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法 最近碰到Android微信内置浏览H5页面,因为其中的文本输入框(input)放置在靠近页面的中下方,点击文本框以后,则输入框会被弹出的手机 ...

  2. VS2010添加类失败问题,弹出错误框,提示 CodeModel操作失败,无法访问标记数据库

    我在使用VS2010添加类的时候,会弹出一个错误框,提示 CodeModel操作失败,可以无法访问标记数据库 英文版是 CodeModel operation failed,Possibly cann ...

  3. android 长按弹出菜单,复制,粘贴,全选

    <!-- 定义基础布局LinearLayout --> <LinearLayout xmlns:android="http://schemas.android.com/ap ...

  4. WPF弹出带蒙板的消息框

    效果图 思路 拿到父级窗体的内容,放入一个容器里,再在容器里放入一个半透明层.将整个容器赋给父级窗体的内容. 关闭时反向操作. 代码 消息窗弹出时 /// <summary> /// 弹出 ...

  5. javascript弹出带文字信息的提示框效果

    // position of the tooltip relative to the mouse in pixel // <html><head><meta charse ...

  6. ViewController添加子控制器 并且弹出

    /** *  初始化子控制器 */ - (void)setupChildVcs { for (int i = 0; i<6; i++) { UIViewController *vc = [[UI ...

  7. js手机浏览器浏览WebApp弹出的键盘遮盖住文本框的解决办法

    if(window.navigator.userAgent.indexOf('Android') > -1 || window.navigator.userAgent.indexOf('Adr' ...

  8. myeclipse经常弹出Subversion Native Library Not Available框解决办法

    两种解决方案:(1)在myeclipse中选择 "Windows" -> Perferences. 然后通过左上方的筛选,选出svn设置菜单,点解左侧的"SVN&q ...

  9. 安卓弹出对话框——Alertdialog

    在Android开发当中,在界面上弹出一个Dialog对话框使我们经常需要做的,本篇随笔将详细的讲解Dialog对话框这个概念,包括定义不同样式的对话框. 一.Dialog 我们首先来看看androi ...

随机推荐

  1. Mysql启动报错 The server quit without updating PID

    [root@db mysql]# service mysql restartMySQL server PID file could not be found![失败]Starting MySQL... ...

  2. Java使用阿里云OSS对象存储上传图片

    原 Java使用阿里云OSS对象存储上传图片 2017年03月27日 10:47:28 陌上桑花开花 阅读数 26804更多 分类专栏: 工作案例总结 版权声明:本文为博主原创文章,遵循CC 4.0 ...

  3. Zookeeper入门(七)之Java连接Zookeeper

    Java操作Zookeeper很简单,但是前提要把包导对. 关于Zookeeper的Linux环境搭建可以参考我的这篇博客:Linux环境下Zookeeper安装 下面进入正题: 一.导入依赖 < ...

  4. centos 系统时间设置

    在我们使用CentOS系统的时候,也许时区经常会出现问题,有时候改完之后还是会出错,下面我们就来学习一种方法来改变这个状况.如果没有安装,而你使用的是 CentOS系统 那使用命令 yum insta ...

  5. HTML控件 隐藏

    div的visibility可以控制div的显示和隐藏,但是隐藏后页面显示空白: style="visibility: none;" document.getElementById ...

  6. R语言爬取动态网页之环境准备

    在R实现pm2.5地图数据展示文章中,使用rvest包实现了静态页面的数据抓取,然而rvest只能抓取静态网页,而诸如ajax异步加载的动态网页结构无能为力.在R语言中,爬取这类网页可以使用RSele ...

  7. vue指令之v-cloak

    vue指令之v-cloak 一起学 vue指令 v-cloak  指令可看作标签属性 某些情况下可能由于机器性能故障或者网络原因,导致传输有问题,那么浏览器无法成功解析数据,此时浏览器输出的内容就是纯 ...

  8. oracle字段like多个条件

    写oracle sql时有时候会有 and (字段 like ‘匹配串1’or 字段 like ‘匹配串2’or ...)这样的情况出现,下面提供一个简洁点的解决方案: and REGEXP_LIKE ...

  9. golang defer 延后执行什么

    对于golang的defer,我们已经知道,defer定义的语句可以延后到函数返回时执行. 经常用在文件的关闭,锁的释放等场景中.而且defer定义的语句即使遇到panic也会执行.这样,可以执行必要 ...

  10. android 给控件使用自定义字体Typeface

    第一步:将字体资源放在assets 资源文件夹下: 第二步:获取字体资源 Typeface mTf = Typeface.createFromAsset(c.getAssets(), "Op ...