在Struts2,可以通过<s:checkboxlist>标签创建多个复选框具有相同名称。棘手的问题是如何设置的默认值在多个复选框。例如,复选框以“红色”,“黄色”,“蓝色”,“绿色”选项的列表,并且要同时设置“红色”和“绿色”为默认选中的值。这里创建一个Web工程:struts2setcheckboxes,来演示在多个复选框如何设置的默认值,整个项目的结构如下图所示:

1. <s:checkboxlist> 实例
一个 <s:checkboxlist> 示例
<s:checkboxlist label="What's your favor color" list="colors" name="yourColor" />
产生下面的HTML代码
<td class="tdLabel"><label for="resultAction_yourColor" class="label"> What's your favor color:</label> </td> <td > <input type="checkbox" name="yourColor" value="red" id="yourColor-1" /> <label for="yourColor-1" class="checkboxLabel">red</label> <input type="checkbox" name="yourColor" value="yellow" id="yourColor-2" /> <label for="yourColor-2" class="checkboxLabel">yellow</label> <input type="checkbox" name="yourColor" value="blue" id="yourColor-3" /> <label for="yourColor-3" class="checkboxLabel">blue</label> <input type="checkbox" name="yourColor" value="green" id="yourColor-4" /> <label for="yourColor-4" class="checkboxLabel">green</label> <input type="hidden" id="__multiselect_resultAction_yourColor" name="__multiselect_yourColor" value="" /> </td>
Action类提供颜色选项的复选框的列表。
//...
public class CheckBoxListAction extends ActionSupport{
private List<String> colors;
private String yourColor;
public CheckBoxListAction(){
colors = new ArrayList<String>();
colors.add("red");
colors.add("yellow");
colors.add("blue");
colors.add("green");
}
public List<String> getColors() {
return colors;
}
//...
}
2. 单个默认选中值
要作为默认选中的值设为“红”选项,只是在行动类中添加一个方法,并返回一个“red”的值。
//...
public class CheckBoxListAction extends ActionSupport{
//add a new method
public String getDefaultColor(){
return "red";
}
}
在<s:checkboxlist>标签中,添加一个value属性并指向 getDefaultColor()方法。
<s:checkboxlist label="What's your favor color" list="colors"
name="yourColor" value="defaultColor" />
Struts 2将“defaultColor”值匹配到对应Java属性getDefaultColor()。
再次运行它,“红”选项将被默认选中。
2. 多个默认选中的值
要设置多个值“红色”和“绿色”作为默认选中的值,就返回一个“String []”,而不是“String ”,在Struts 2将相应匹配。
//...
public class CheckBoxListAction extends ActionSupport{
//now return a String[]
public String[] getDefaultColor(){
return new String [] {"red", "green"};
}
}
<s:checkboxlist label="What's your favor color" list="colors"
name="yourColor" value="defaultColor" />
再次运行它,“红色”和“绿色”的选项将被默认选中。
http://localhost:8080/struts2setcheckboxes/checkBoxListAction.action
点击提交后,显示结果如下图所示:
