checkboxllist标签可以一次创建多个复选框,相当于多个<input type="checkbox"标签> ,它根据list属性指定的集合来生成多个复选框。
一个简单的index.jsp:
通过Map对象输出复选框的值,譬如:
使用集合里存放的多个javabean来生成多个复选框:
调用getRyan方法返回一个包含多个User实例的数组。
在jsp页面中使用:
一个简单的index.jsp:
<s:formaction="first">
<s:checkboxlistname="sds"list="{'一辉','撒卡','童虎','加隆'}"label="请选择你所喜欢的圣斗士">
</s:checkboxlist>
<s:submitvalue="submit"></s:submit>
</s:form>
action中:
<s:checkboxlistname="sds"list="{'一辉','撒卡','童虎','加隆'}"label="请选择你所喜欢的圣斗士">
</s:checkboxlist>
<s:submitvalue="submit"></s:submit>
</s:form>
publicString[]getSds(){
returnsds;
}
public voidsetSds(String[]sds){
this.sds=sds;
}
@Override
publicStringexecute() throwsException{
for( inti=0;i<sds.length;i++){
System.out.println(sds[i]);
}
returnSUCCESS;
}
运行结果:依次打印出你所选择的checkbox所对应的值
returnsds;
}
public voidsetSds(String[]sds){
this.sds=sds;
}
@Override
publicStringexecute() throwsException{
for( inti=0;i<sds.length;i++){
System.out.println(sds[i]);
}
returnSUCCESS;
}
运行结果:依次打印出你所选择的checkbox所对应的值
通过Map对象输出复选框的值,譬如:
<s:formaction="ryansds">
<s:checkboxlistname="b"list="#{'凤凰座':'一辉','双子座':'撒卡','白羊座':'史昂','天枰座':'童虎'}"
label="请选择你最喜欢的圣斗士"labelposition="top"
listKey="value"
listValue="key">
</s:checkboxlist>
<s:submitvalue="submit"></s:submit>
</s:form>
在ryansds对应的action中,做一个输出,看看传过来的值:
<s:checkboxlistname="b"list="#{'凤凰座':'一辉','双子座':'撒卡','白羊座':'史昂','天枰座':'童虎'}"
label="请选择你最喜欢的圣斗士"labelposition="top"
listKey="value"
listValue="key">
</s:checkboxlist>
<s:submitvalue="submit"></s:submit>
</s:form>
public
classRyanSDS
extendsActionSupport{
privateString[]b;
publicString[]getB(){
returnb;
}
public voidsetB(String[]b){
this.b=b;
}
@Override
publicStringexecute() throwsException{
for( inti=0;i<b.length;i++){
System.out.println(b[i]);
}
returnSUCCESS;
}
}
注意:checkboxllist标签有两个属性,listKey和listValue,他们代表了list中元素的某个属性,默认情况下 lisKey="key"(这里的key代表map中的key值,也是会传给strut2的值),listValue="value"(这里的value代表map中的value值,他会在页面中显示出来,提交表单时,并不能被struts取得)。 如果你想将map中的key值显示在页面,可以设置listKey="value."
privateString[]b;
publicString[]getB(){
returnb;
}
public voidsetB(String[]b){
this.b=b;
}
@Override
publicStringexecute() throwsException{
for( inti=0;i<b.length;i++){
System.out.println(b[i]);
}
returnSUCCESS;
}
}
使用集合里存放的多个javabean来生成多个复选框:
packagecom.yan.test;
public classUser{
privateStringusername;
privateStringpassword;
publicUser(Stringusername,Stringpassword){
this.username=username;
this.password=password;
}
。。。。省略POJO
}
public classUser{
privateStringusername;
privateStringpassword;
publicUser(Stringusername,Stringpassword){
this.username=username;
this.password=password;
}
。。。。省略POJO
}
调用getRyan方法返回一个包含多个User实例的数组。
public
classUserService{
publicUser[]getRyan(){
return newUser[]{
newUser("ryan","ryanchen"),
newUser("zhengyao","YOYO"),
newUser("boys","girls")
};
}
}
publicUser[]getRyan(){
return newUser[]{
newUser("ryan","ryanchen"),
newUser("zhengyao","YOYO"),
newUser("boys","girls")
};
}
}
在jsp页面中使用:
<s:beanname="com.yan.test.UserService"id="sds"/>
<s:checkboxlistname="sdfsd"list="#sds.ryan"
listKey="username"
listValue="password">
</s:checkboxlist>
浏览该页面:
<s:checkboxlistname="sdfsd"list="#sds.ryan"
listKey="username"
listValue="password">
</s:checkboxlist>
浏览该页面:
