如何得到原来用户复选框的值

hh5306346 2009-11-11 09:23:26
问题是这样的,我详细的说一下,然后请高手认真的看看

用户开始选择复选框,比如北京,河北,天津,上海这四个,这四个是数据库一张表里搜出来的,比如table aaa表里的city1字段,选好后保存到数据库的另一个表bbb的字段里,中间用逗号分隔,比如你选择了北京,上海,那么存到数据库表bbb的city2字段的内容就是(北京,上海)


然后我要在页面显示出用户选择了什么,这点很容易啦,搜出数据库表bbb字段city2显示到页面就可以了

最后光显示出来不行,用户还要修改这个内容,当用户点修改按钮的时候,出来个页面,这个页面还有四个复选框checkbox,内容还是从table aaa表里的city1字段里搜出来的,而我想达到的效果是这四个复选框默认是原来用户选择的(北京,上海)这两个城市上打勾,就是默认选上哦,看好这四个复选框是表aaa搜出来的哦,动态的

如何实现,请写出详细例子,越详细越好
...全文
363 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
hh5306346 2009-11-12
  • 打赏
  • 举报
回复
<c:if test='${fn:contains(article.userGroups,us)}'>checked="true" </c:if> 里的
article.userGroups不知道是什么,我的情况是这样的,我从数据库里搜出来的集合user,List user = servicePaeaAudtPolicyDefineImpl.finduser();
然后我吧这个集合setAttribute到页面,然后怎么写article.userGroups这段??
howsun_zh 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 hh5306346 的回复:]
请大家帮我看看6楼的问题
fn:contains(article.userGroups,us)你这us哪来的??还有就是我是在action aaa里搜出的集合,集合类型是user的话,怎么写??
[/Quote]
不是us,是var="ug">中的ug,写错了。
集合中的类型是user,也是同样用c:forEach遍历。
zhaoyuzhong 2009-11-12
  • 打赏
  • 举报
回复
我用javascript做个动态的checkbox 你到时可以用arraylist替换



<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script>
var value = "北京,上海,成都";
var aa=new Array(); //定义一维数组
for(var i=0;i<=4;i++)
{
if(i==0){
aa[i] = "北京";

}
if(i==1){
aa[i] = "上海";

}
if(i==2){
aa[i] = "天津";

}
if(i==3){
aa[i] = "重庆";

}
if(i==4){
aa[i] = "成都";

}

}

function load(){
var ss = "";

for(var p=0;p<aa.length;p++){
if(value.indexOf(aa[p])==-1){
ss= ss +"<input type='checkbox' name='city' value="+aa[p]+">"+aa[p]+"  ";
}else{
ss= ss +"<input type='checkbox' name='city' value="+aa[p]+" checked>"+aa[p]+"  ";
}

}


document.getElementById("check").innerHTML=ss;

}


function sss(){
var aa = "";

var city = document.getElementsByName("city");
for(var j=0;j<city.length;j++){

if(city[j].checked){
aa = aa + city[j].value + ",";
}
}
if(aa.length>1){
aa = aa.substr(0,aa.length-1);
}else{
aa = "没有选择内容";
}

alert(aa);
}
</script>
</HEAD>

<BODY onload="load()">
<br/>
<div id="check"></div><br/><br/>
<input type="button" value="查看" onclick="sss()">
</BODY>
</HTML>
hh5306346 2009-11-12
  • 打赏
  • 举报
回复
请大家帮我看看6楼的问题
hh5306346 2009-11-12
  • 打赏
  • 举报
回复
楼上没明白我意思,取值这么简单的东西,谁都会
道光2008 2009-11-12
  • 打赏
  • 举报
回复
复选框的值,在客户用js获得,赋值给隐藏域,然后传递给服务器
hh5306346 2009-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 zhangjihao 的回复:]
就楼主这么爽快,我花点时间吧:

第一方案是借助框架,例如Struts和Spring MVC,它们封装的checkbox标签都可以自动还原选项,但你的city2属性必须集合类型,例如List、Set。你可以在bean中做一个方法将带逗号的字符分解成集合,再绑定到框架封装的checkbox标签中。举个代码实例,假如有一个文章Bean(Article)和用户组Bean(UserGroup),要完成一个技术需求是,某篇文章只能是某几个用户组的用户才能看,这样构成了对多对关系,那么Article中应该如下属性:
Set <UserGroup> userGroups = new HashSet <UserGroup>();
你在Action中将所有的UserGroup查询到一个List中,再将这个List放在request作用域中。例如:

List <UserGroup> ugs = orm.getUserGroups();
request.setAttribute("ugs",ugs);

再到JSP(使用Spring MVC的Form标签库)页面:
<form:checkboxes path="userGroups " items="${ugs}" itemLabel="roleName" itemValue="roleId"/>
这样就一对多写入到数据库,反过来在编辑(修改)的时候自动还原到Html页面(已选的自动勾选)。

第二种方案,用Jstl在Jsp页面上判断,仍然以文章-用户组来说明:
首先仍然要查询出母数据,并存入request对象中,就像得到所有的地区数据一样
List <UserGroup> ugs = orm.getUserGroups();
request.setAttribute("ugs",ugs);

然后在Jsp页面上,用Html标准的form表单的checkbox控件:
<c:forEach items="${ugs}" var="ug">
<input type="checkbox" value="${ug.roleId}" <c:if test='${fn:contains(article.userGroups,us)}'>checked="true" </c:if>/>${ug.roleName} <br />
</c:forEach>

其中代码:
<c:if test='${fn:contains(article.userGroups,us)}'>checked="true" </c:if>
表示总用户组某组是否包含在该文章中的某用户组,如果包含则让checkbox勾选上。
第二种方案是用了原生态的checkbox控件。
[/Quote]

fn:contains(article.userGroups,us)你这us哪来的??还有就是我是在action aaa里搜出的集合,集合类型是user的话,怎么写??
howsun_zh 2009-11-12
  • 打赏
  • 举报
回复
我还是按你的需求重写一遍吧,假如你有两个类,分别User用户、City城市,你现在的需求是一个用户可有多个城市,一个城市可有多个用户,构成多对多关系(否则不需要复选框的),代码:

User.java


private String userName;//主键

private String passWord;//密码

@ManyToMany(cascade=CascadeType.REFRESH,fetch=FetchType.EAGER)
@JoinTable(name ="user_city",
joinColumns=@JoinColumn(name="userName"),
inverseJoinColumns=@JoinColumn(name="cityCode")
)
private Set<City> cities = new HashSet<City>;//与city对象发生关系,且User是主控端


City.java


private String cityCode;//城市代码,作主键

private String cityName;//城市名称

@ManyToMany(fetch=FetchType.LAZY,mappedBy="cities ")
private Set<User> users = new HashSet<User>;//与user对象发生关系,自己是被控端


除了两者多对多关系写了配置外,其它配置自己写吧。

使用说明:

由于你是要还原,所以可看作是你的数据里已经有了user对象了,那么Action中:


User user = orm.getUser("zhangsan");//查出一个叫张三的用户

List<City> cities = orm.getCities();//查出所有城市数据

request.setAttribute("user",user);
request.setAttribute("cities",cities);//将两个都放入request作用域中。


回到Jsp页面:
你现在应该是要编辑用户,所以建立表单,将属性与User类对应,其中选择城市的checkbox如下:

<c:forEach items="${cities}" var="city"> 
<input type="checkbox" name="cities" value="${city.cityCode}" <c:if test='${fn:contains(user.cities,city)}'>checked="true" </c:if>/>${city.cityName} <br />
</c:forEach>


<c:if test='${fn:contains(user.cities,city)}'>checked="true"</c:if>表示当正在编辑的user对象已有的城市包含当前遍历的城市,则这个checkbox勾选上。
如果正在编辑的user对象不是从数据库取出的,而是新建的(new User())出来的,那么user.cities的size==0,则所有遍历出来的城市都不会勾选上,这是符合逻辑的。
howsun_zh 2009-11-11
  • 打赏
  • 举报
回复
就楼主这么爽快,我花点时间吧:

第一方案是借助框架,例如Struts和Spring MVC,它们封装的checkbox标签都可以自动还原选项,但你的city2属性必须集合类型,例如List、Set。你可以在bean中做一个方法将带逗号的字符分解成集合,再绑定到框架封装的checkbox标签中。举个代码实例,假如有一个文章Bean(Article)和用户组Bean(UserGroup),要完成一个技术需求是,某篇文章只能是某几个用户组的用户才能看,这样构成了对多对关系,那么Article中应该如下属性:
Set<UserGroup> userGroups = new HashSet<UserGroup>();
你在Action中将所有的UserGroup查询到一个List中,再将这个List放在request作用域中。例如:

List<UserGroup> ugs = orm.getUserGroups();
request.setAttribute("ugs",ugs);

再到JSP(使用Spring MVC的Form标签库)页面:
<form:checkboxes path="userGroups " items="${ugs}" itemLabel="roleName" itemValue="roleId"/>
这样就一对多写入到数据库,反过来在编辑(修改)的时候自动还原到Html页面(已选的自动勾选)。

第二种方案,用Jstl在Jsp页面上判断,仍然以文章-用户组来说明:
首先仍然要查询出母数据,并存入request对象中,就像得到所有的地区数据一样
List<UserGroup> ugs = orm.getUserGroups();
request.setAttribute("ugs",ugs);

然后在Jsp页面上,用Html标准的form表单的checkbox控件:
<c:forEach items="${ugs}" var="ug">
<input type="checkbox" value="${ug.roleId}" <c:if test='${fn:contains(article.userGroups,us)}'>checked="true"</c:if>/>${ug.roleName}<br />
</c:forEach>

其中代码:
<c:if test='${fn:contains(article.userGroups,us)}'>checked="true"</c:if>
表示总用户组某组是否包含在该文章中的某用户组,如果包含则让checkbox勾选上。
第二种方案是用了原生态的checkbox控件。
handsome_huxiulei 2009-11-11
  • 打赏
  • 举报
回复
楼上正解..
swandragon 2009-11-11
  • 打赏
  • 举报
回复

<SCRIPT LANGUAGE="JavaScript">
<!--
var selectValue = "北京,天津";
function init(){
var o = document.getElementById("checkboxs").getElementsByTagName("input");
var tmp = selectValue.split(",");
for(var i=0; i < o.length; i++){
for(var j = 0 ; j < tmp.length ; j ++)
{
if(o[i].value == tmp[j]){
o[i].checked = true;
}
}
}
}
window.onload=init;
//-->
</SCRIPT>
<span id="checkboxs">
<input type="checkbox" value="北京" onclick="kt()" />北京<br />
<input type="checkbox" value="河北" onclick="kt()" />河北<br />
<input type="checkbox" value="天津" onclick="kt()" />天津<br />
<input type="checkbox" value="上海" onclick="kt()" />上海<br />
</span>
swandragon 2009-11-11
  • 打赏
  • 举报
回复

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<SCRIPT LANGUAGE="JavaScript">
<!--
//默认选中checkbox值
var selectValue = "1,2";
function init(){
var o = document.getElementById("checkboxs").getElementsByTagName("input");
var tmp = selectValue.split(",");
alert(tmp[0]);
for(var i=0; i < o.length; i++){
for(var j = 0 ; j < tmp.length ; j ++)
{
if(o[i].value == tmp[j]){
o[i].checked = true;
}
}
}
}
//-->
</SCRIPT>
</HEAD>
<BODY onload="init()">
<span id="checkboxs">
<input type="checkbox" value="1" onclick="kt()" />345553名称一<br />
<input type="checkbox" value="2" onclick="kt()" />577441名称二<br />
<input type="checkbox" value="3" onclick="kt()" />643533名称三<br />
<input type="checkbox" value="4" onclick="kt()" />356764名称四<br />
</span>
</BODY>
</HTML>
hh5306346 2009-11-11
  • 打赏
  • 举报
回复
请写出详细内容吧,我追加分,要百度分的可以和我说,总之一定要帮我解决

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧