Struts2幾個常用標籤的主要屬性及示例(一)

醉面韋陀發表於2010-03-29

以前做過一個struts2的專案,總結了用到的幾個struts2常用標籤的用法,以及響應的示例程式碼,每個標籤總結了一下主要屬性,頁面程式碼,後臺程式碼以及生成的html程式碼

 

1. checkbox

Checkbox tag用來生成html的一個input元素,型別為checkbox。這個標籤常用來表示布林型的變數。

 

Attributes

Description

name

對應action中的屬性名稱

fieldValue

選中時action變數被賦的值,當action的欄位是布林型的時候可以省略這個屬性

value

只能為true或者false,來決定生成的checkbox是否被選中,儘量不用這個屬性

label

Jsp頁面為checkbox設定的顯示內容

 

Jsp code:

<s:checkbox name="projectClosed" value="true" fieldValue="yes"/>

 

Page source code:

<input type="checkbox" name="projectClosed" value="yes" checked="checked" 

id="testTags_projectClosed"/>

<input type="hidden" name="__checkbox_projectClosed" value="yes" />

 

Action class:

private String projectClosed; //with getter/setter method

 

Result:

projectClosed = "yes";

checkbox如果顯示在結果列表的一列,需要用checkbox的標籤結合iterator標籤,這時checkboxfieldValue屬性用變數賦值。在action裡要宣告一個字串型陣列來取得這個checkbox group的值

 

2. checkboxlist

checkboxlist標籤用來生成一組checkbox,這個標籤不適合用在result table中。

 

Attributes

Description

name

對應action中的屬性名稱,屬性的型別即是listKey的值所對應的型別

list

Required,這個屬性的值必須為可迭代型別或者是陣列型別,比如listsetarray。用以顯示所有的選擇項。如果list的值為Map,則mapkey對應option的值,mapvalue對應option的顯示內容

listKey

生成的checkbox input元素的value屬性

listValue

生成的checkboxinput元素的顯示內容

 

Jsp code:

<s:checkboxlist list="#session.hobbyList" name="hobbyIds" listKey="hobbyId

listValue="hobbyName" ></s:checkboxlist>

 

Page source code:

<input type="checkbox" name="hobbyIds" value="1" id="hobbyIds-1" checked="checked"/>

<label for="hobbyIds-1" class="checkboxLabel">Football</label>

<input type="checkbox" name="hobbyIds" value="2" id="hobbyIds-2"/>

<label for="hobbyIds-2" class="checkboxLabel">Basketball</label> 

 

Prepare action

如果要顯示的內容是從db中取得,那麼list屬性要在頁面load之前賦值,這就需要有一個單獨的action來取資料並給list屬性賦值,下面是個演示:

public String execute() throws Exception {

        List<Hobby> hobbyList = new ArrayList<Hobby>();

        Hobby hobby_1 = new Hobby(new Long(1), "Football");

        Hobby hobby_2 = new Hobby(new Long(2), "Basketball");

 

        hobbyList.add(hobby_1);

        hobbyList.add(hobby_2); //this list load from database

 

        map.put("hobbyList", hobbyList);

        return SUCCESS; //return xxx.jsp

    }

 

Action class:

private Long[] hobbyIds; //with getter/setter method

public String execute() throws Exception {

for (Long hobbyId : hobbyIds) {

            //TODO:this checkbox is checked, and its value available

        }

}

 

Result:

這樣在action裡面就可以通過Long型的陣列hobbyIds 來反映有哪些checkboxchecked狀態,並做相應的操作。

3. combobox

combobox標籤的用法類似checkboxlist,該標籤生成的render程式碼顯示為一個input元素以及一個select元素

 

Attributes

Description

name

對應action中的屬性名稱,屬性的型別即是listKey的值所對應的型別,這個屬性的值也即是生成的text fieldname的值。

list

Required,這個屬性的值必須為可迭代型別或者是陣列型別,比如listsetarray,用以顯示所有的選擇項。如果list的值為Map,則mapkey對應option的值,mapvalue對應option的顯示內容

listKey

生成的select option元素的value屬性,也即是選擇某個option後,text field顯示的內容

listValue

生成的selectoption元素的顯示內容

headerKey

設定第一個選項的值

headerValue

設定第一個選項的顯示內容

 

Jsp code:

<s:combobox list="#session.hobbyList" name="comboHobbyId" headerKey="-1" headerValue="--Please Select One--" listKey="hobbyId" listValue="hobbyName"></s:combobox>

 

Page source code:

<input type="text" name="comboHobbyId" value="" id="testTags_comboHobbyIds"/><br />

<select onChange="autoPopulate_testTags_comboHobbyIds(this);">

<option value="-1">--Please Select One--</option>

     <option value="1">Football</option>

     <option value="2">Basketball</option>

</select> 

 

Prepare action

如果要顯示的內容是從db中取得,那麼list屬性要在頁面load之前賦值,這就需要有一個單獨的action來取資料並給list屬性賦值:

public String execute() throws Exception {

        List<Hobby> hobbyList = new ArrayList<Hobby>();

        Hobby hobby_1 = new Hobby(new Long(1), "Football");

        Hobby hobby_2 = new Hobby(new Long(2), "Basketball");

 

        hobbyList.add(hobby_1);

        hobbyList.add(hobby_2); //this list load from database

 

        map.put("hobbyList", hobbyList);

        return SUCCESS; //return xxx.jsp

    }

 

Action class:

private String comboHobbyId; //with getter/setter method

 

Result:

假設選中第二個選項,則comboHobbyId的值為‘1’對應的hobbyName為“Football

相關文章