2011-01-25 61 views
2

我目前正在開發一個Struts2應用程序,其中用戶將做出三種選擇之一,並根據選擇提供一些不同的預定義複選框。無論選擇何種選項,某些複選框都會顯示,而其他複選框對於每個選項都是唯一的。目前總共有大約50個不同的複選框,每個複選框將有一個ID,從1到50.從列表中獲取/設置多個struts2複選框

用戶所做的選擇將作爲數據庫中的行保留下來,並且我需要能夠如果用戶想要更改所做的選擇,請重新填充選定的複選框。

使用checkboxlist是不合適的,因爲我需要將複選框放在頁面上的不同字段集中。所以我想我會陷入常規。現在

,已經有人拿到我怎麼會一個好主意: 1)獲取選定的複選框,preferebly通過將它們放入一個列表/在我的行動 2組)從列表中重新填充選擇複選框,其中選擇已經存儲?

任何想法非常感謝!

回答

2

1)要檢索選定的複選框,使用這樣的(假設你正在使用JSP):

<input type="checkbox" name="YourName" id="checkbox-1" value="1" /> 
<input type="checkbox" name="YourName" id="checkbox-2" value="2" /> 
<input type="checkbox" name="YourName" id="checkbox-3" value="3" /> 
etc... 

在你的Action類,你可以檢索變量「YOURNAME」爲整數的ArrayList例如,它將通過Struts2自動填充選中的複選框ID。

2)重新填充例如編輯頁面上的複選框,有很多可能的解決方案(你能不能給我們介紹一下你的架構,對象一些更多的細節,等等?)

在你的Action類,您可以在列表中回顧之前檢查過的複選框的標識(我們稱之爲selectedList)。一旦在您的JSP視圖中,您可以將「checked =」checked「」參數添加到複選框字段,條件是框包含在selectedList中。類似的東西應該工作:

<s:if test="'checkboxId' in selectedList">checked="checked"</s:if> 
+0

感謝您的回答!我將使用JSP和struts2 taglibs,但我猜你的「標記生成的。我肯定會測試ArrayList解決方案。關於我的架構,我將有一個對象持有用戶信息。該對象將有一個@OneToMany註釋集合,它將保存代表每個用戶選擇的答案的對象。因此,很有可能獲取包含答案的列表並將其用作編輯頁面的基礎。關於,我會把它放在複選框標籤內嗎? – Daniel

+0

事情是你不能把Struts2標籤放在另一個Struts2標籤(因此 />不起作用)。根據經驗,使用常規XHTML標籤有時會更方便。如果你想使用S2標籤,你可以這樣做:。要檢查Struts2複選框,您必須爲該值指定「true」,這可能會很痛苦(例如,如果您希望在操作類中獲得另一個值)。這是因爲否則你應該使用checkboxlists,但它們並不總是方便。 – TBW

+0

然後我明白你的觀點。看起來像這樣會做我想要的,你使用XHTML標籤的方法比使用struts標籤的if/else標籤更清晰。我明天將能夠測試這種方法,然後我會找回結果! – Daniel

相關問題