2012-06-29 88 views
0

我無法讓我的freemarker struts2選擇標籤顯示對象相關選項列表的默認值。struts2中的預選選項(freemarker)

在我的行動,我有:

private List<CodeLabel> modifRoomTypeOpt; 

裏面我有對象CodeLabel與喜歡的價值觀:單,d:雙,...

<@s.select id="123123" 
    name="roomModif[2].type" 
    value="${modifiedRoom.type}" 
    list="modifRoomTypeOpt" listKey="code" listValue="label"/> 

在生成的HTML,我可以看到S,D,T,...和標籤的選項Single,Double,...這樣迭代我的CodeLabel對象就完成了。但在我的選擇中,總是預選第一個選項。我檢查了$ {modifiedRoom.type}和它的'D'的值。 爲什麼D值選項沒有預選?

回答

0

要設置您需要設置選擇標記的價值屬性,例如默認值:

<@s.select id="123123" 
name="roomModif[2].type" 
value="${modifiedRoom.type}" 
list="modifRoomTypeOpt" listKey="code" listValue="label" 
value="modifRoomTypeOpt.get(1)" /> 

代碼尚未經過測試,但我相信它應該工作。 僅供參考http://struts.apache.org/2.0.12/docs/select.html

如果要在select元素上設置默認標題,請使用headerKey和headerValue屬性。

1

有趣,

我做了一些調查和代碼調試,我發現屬性爲OGNL變量進行評估。這意味着Struts2會在堆棧中查找與您在屬性中輸入的字符串匹配的變量。

內部評估結果然後被放入屬性列表nameValue

所以,我驚奇地發現,使用屬性nameValue而不是是一個很好的解決方法與給定值預選select元素。

你的情況:

<@s.select id="123123" 
name="roomModif[2].type" 
nameValue="${modifiedRoom.type}" 
list="modifRoomTypeOpt" listKey="code" listValue="label"/> 

,或者也:

<@s.select id="123123" 
name="roomModif[2].type" 
nameValue=modifiedRoom.type 
list="modifRoomTypeOpt" listKey="code" listValue="label"/>