Struts2設定多個核取方塊預設值


在Struts2,可以通過<s:checkboxlist>標籤建立多個核取方塊具有相同名稱。棘手的問題是如何設定的預設值在多個核取方塊。例如,核取方塊以「紅色」,「黃色」,「藍色」,「綠色」選項的列表,並且要同時設定「紅色」和「綠色」為預設選中的值。這裡建立一個Web工程:struts2setcheckboxes,來演示在多個核取方塊如何設定的預設值,整個專案的結構如下圖所示:


下載程式碼 – http://pan.baidu.com/s/1bnfrCUr

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

點選提交後,顯示結果如下圖所示: