Eclipse 工作台基本概念>搜索视图
2011-09-23 15:13
363 查看
页面动态的产生若干个checkbox(比如100)
每个checkbox可以单独勾选
有一个按钮按下之后需要提交选中的checkbox对应的数据bean的id到后台
好像不可以 添加时可以的 删除确实问题
一是增加一个cookie值 记录被删除的id 不去除重复 后台用linkedlist和hashmap 处理 成一个不重复的 id序列 来记录
二 是换一个处理方法
待续
发现这个方法很繁琐 所以考虑换个方法了
考虑用struts2的标签库 s:checkboxlist
代码如下
提交之后 在action定义 private String sights
得到的提交过来的格式是 listKey对应的值 以逗号隔开 比如 1235,2354,1225
这样的东西是合要求的 但是又有两个新问题
1 显示乱且不间隔 理想状态时需要每行四个
2 无法在每个checkbox后面的文字加上a链接
对于问题1 解决方法是修改 struts core包底下有个template.simple包下的 checkboxlist.ftl 在src建一个template.simple包 拷贝文件 修改为
但是对于第二个问题 可能也是修改这个模板文件 但是还有问题 如果我把sightname需要连接的动态生成的a标签 写死在ftl文件中 那么其他可以用到这个checkboxlist的情况也无法共存
只有放弃这个方案 最后决定将提交页面放在js中做
利用s:iterator动态产生有a标签的checkbox 在js中过滤所有选中checked状态的checkbox 取出id值 组装成一个string传参到后台
我采用jquery
jquery部分
最后的str就是需要的id串 至此问题解决 每行四个checkbox check框对齐 sightname值带一个a标签查看详细 提交js处理成id串提交后台action处理
每个checkbox可以单独勾选
有一个按钮按下之后需要提交选中的checkbox对应的数据bean的id到后台
<script type="text/JavaScript"> <!-- function add(id,obj){ var isChecked=false; if(obj.checked) { var isChecked=true; } alert(isChecked); if(isChecked==true) { var old=getCookie("listSightIds"); alert("old:"+old); if(null!=old&&""!=old) { old=old+","+id; } else { old=id; } setCookie("listSightIds",old,1); alert(" old after:"+old+", and setCookie :"+getCookie("listSightIds")); } else { removeCookie(listSightIds); } } function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } function getCookie(c_name) { if (document.cookie.length>0) { c_start=document.cookie.indexOf(c_name + "=") if (c_start!=-1) { c_start=c_start + c_name.length+1 c_end=document.cookie.indexOf(";",c_start) if (c_end==-1) c_end=document.cookie.length return unescape(document.cookie.substring(c_start,c_end)) } } return "" } function removeCookie(c_name) { setCookie(c_name,"",-1); } //--> </script>
<s:iterator value="sightsForSs" status="status" id="index"> <s:if test="#status.index % 4 == 0"> <tr> </s:if> <td> <input type="checkbox" onclick="javascript:add('<s:property value='#index.id' />',this);" id="<s:property value='#index.id' />"><a target="_blank" href = "<%=ctx %>/cityDo!getSightById?sightId=<s:property value='#index.id' />"><s:property value="#index.sightName" /></a> </td> <s:if test = "#status.index % 4 == 3 || #status.last"> </tr> </s:if> </s:iterator>
好像不可以 添加时可以的 删除确实问题
一是增加一个cookie值 记录被删除的id 不去除重复 后台用linkedlist和hashmap 处理 成一个不重复的 id序列 来记录
二 是换一个处理方法
待续
发现这个方法很繁琐 所以考虑换个方法了
考虑用struts2的标签库 s:checkboxlist
代码如下
<s:checkboxlist name="sights" list="listSight" listKey="id" listValue="sightName" />
提交之后 在action定义 private String sights
得到的提交过来的格式是 listKey对应的值 以逗号隔开 比如 1235,2354,1225
这样的东西是合要求的 但是又有两个新问题
1 显示乱且不间隔 理想状态时需要每行四个
2 无法在每个checkbox后面的文字加上a链接
对于问题1 解决方法是修改 struts core包底下有个template.simple包下的 checkboxlist.ftl 在src建一个template.simple包 拷贝文件 修改为
<#assign itemCount = 0/> <#if parameters.list??> <@s.iterator value="parameters.list"> <#assign itemCount = itemCount + 1/> <#if parameters.listKey??> <#assign itemKey = stack.findValue(parameters.listKey)/> <#else> <#assign itemKey = stack.findValue('top')/> </#if> <#if parameters.listValue??> <#assign itemValue = stack.findString(parameters.listValue)?default("")/> <#else> <#assign itemValue = stack.findString('top')/> </#if> <#assign itemKeyStr=itemKey.toString() /> <#if (itemCount-1)%4 == 0> <tr> </#if> <td> <input type="checkbox" name="${parameters.name?html}" value="${itemKeyStr?html}" id="${parameters.name?html}-${itemCount}"<#rt/> <#if tag.contains(parameters.nameValue, itemKey)> checked="checked"<#rt/> </#if> <#if parameters.disabled?default(false)> disabled="disabled"<#rt/> </#if> <#if parameters.title??> title="${parameters.title?html}"<#rt/> </#if> <#include "/${parameters.templateDir}/simple/scripting-events.ftl" /> <#include "/${parameters.templateDir}/simple/common-attributes.ftl" /> /> <label for="${parameters.name?html}-${itemCount}" class="checkboxLabel">${itemValue?html}</label> </td> <#if itemCount%4 == 0> </tr> </#if> ] </@s.iterator> <#else> </#if> <input type="hidden" id="__multiselect_${parameters.id?html}" name="__multiselect_${parameters.name?html}" value=""<#rt/> <#if parameters.disabled?default(false)> disabled="disabled"<#rt/> </#if> />
但是对于第二个问题 可能也是修改这个模板文件 但是还有问题 如果我把sightname需要连接的动态生成的a标签 写死在ftl文件中 那么其他可以用到这个checkboxlist的情况也无法共存
只有放弃这个方案 最后决定将提交页面放在js中做
利用s:iterator动态产生有a标签的checkbox 在js中过滤所有选中checked状态的checkbox 取出id值 组装成一个string传参到后台
我采用jquery
<s:iterator value="sightsForSs" status="status" id="index"> <s:if test="#status.index % 4 == 0"> <tr> </s:if> <td> <input type="checkbox" id="<s:property value='#index.id' />"><a target="_blank" href = "<%=ctx %>/cityDo!getSightById?sightId=<s:property value='#index.id' />"><s:property value="#index.sightName" /></a> </td> <s:if test = "#status.index % 4 == 3 || #status.last"> </tr> </s:if> </s:iterator>
jquery部分
var str=""; $(document).ready(function() { $("#nextButton").click(function(){ alert("nextButton"); str=""; getString(); alert("all String is:"+str); }); }); function getString() { $("input::checked").each(function(i){ var st=$(this).attr("id"); if(""==str) { str=st; } else{ str=str+","+st; } }); }
最后的str就是需要的id串 至此问题解决 每行四个checkbox check框对齐 sightname值带一个a标签查看详细 提交js处理成id串提交后台action处理
相关文章推荐
- Eclipse 工作台基本概念>视图概述
- Eclipse 工作台基本概念>提纲视图
- Eclipse 工作台基本概念>属性视图
- Eclipse 工作台基本概念>项目浏览器视图
- Eclipse 工作台基本概念>任务视图
- Eclipse 工作台基本概念>快速视图
- Eclipse 工作台基本概念>帮助视图
- Eclipse 工作台基本概念>分离视图
- Eclipse 工作台基本概念>问题视图
- Eclipse 工作台基本概念>链接资源
- Eclipse 工作台基本概念>工作台
- Eclipse 工作台基本概念>虚拟文件夹
- Eclipse 工作台基本概念>编辑器
- Eclipse 工作台基本概念>标记
- Eclipse 工作台基本概念>构建
- Eclipse 工作台基本概念>资源
- Eclipse 工作台基本概念>路径变量
- Eclipse 工作台基本概念>资源层次
- Eclipse 工作台基本概念>欢迎页面
- Eclipse 工作台基本概念>资源过滤器