在Struts2,可以通過<s:checkboxlist>標簽創(chuàng)建多個復選框具有相同名稱。棘手的問題是如何設置的默認值在多個復選框。例如,復選框以“紅色”,“黃色”,“藍色”,“綠色”選項的列表,并且要同時設置“紅色”和“綠色”為默認選中的值。這里創(chuàng)建一個Web工程:struts2setcheckboxes,來演示在多個復選框如何設置的默認值,整個項目的結構如下圖所示:
一個 <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; } //... }
要作為默認選中的值設為“紅”選項,只是在行動類中添加一個方法,并返回一個“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" />
再次運行它,“紅”選項將被默認選中。
要設置多個值“紅色”和“綠色”作為默認選中的值,就返回一個“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
點擊提交后,顯示結果如下圖所示: