2012-01-06 25 views
0

我想在DynaForm上設置一個值,這很容易在Action類中完成,但我想在JSP本身中這樣做,方法是從進入表格。在JSP中爲DynaActionForm/DynaValidatorForm設置值

<form-bean name="inputCIDs" type="org.apache.struts.validator.DynaValidatorForm"> 
    <form-property name="containerIDFormat" type="java.lang.String"/> 
</form-bean> 

下面的Java代碼在JSP中,但有一個Struts 1.x的或JSTL標記,它會做的等效操作?
的Struts 1.2.4
標記庫1.1.2
的JBoss 4.0.2

<% 
    DynaActionForm form = (DynaActionForm) request.getAttribute("inputCIDs"); 
    form.set("containerIDFormat", session.getAttribute("varInSession")); 
%> 

該屬性將使用選擇框

<html:select property="containerIDFormat"> 
    <html:options collection="containerIDFormats" property="value" labelProperty="description"/> 
</html:select> 

環境中使用,並改變由用戶

回答

0

爲什麼? JSP不適合這種類型的工作。

<html:hidden property="containerIDFormat" value="${varInSession}"/> 

如果您只是設置了表單值,它將無法繼續提交,因爲將創建一個新的請求範圍表單。如果它是一個會話範圍的表單,那麼在JSP中完成這項工作的原因就更少了。

+0

你是對的。這是我試圖完成的最終挑戰。我希望將選擇框的值從會話中拉出並放入會話中。但是,如果我沒有在動作中定義的DynaForm中聲明該變量,它就不能工作。這個特定的變量以多種形式使用,頁面可以從多個動作加載。通過將代碼放入JSP中,我確保表單中的值與會話中的值匹配。有沒有更好的辦法? – JustinKSU 2012-01-06 22:28:30

+0

@JustinKSU嗯,使用動態形式意味着沒有'重置'。它仍然可以在行動中完成;如果這是一切都結束了,可能會在一個薄弱的基地行動。也許,使用隱藏的屬性也很容易。不確定你對選擇框的含義;如果表單有一個選擇框,它應該有一個屬性。 – 2012-01-06 22:33:14

+0

有沒有辦法映射一個屬性,以便將其值自動保存到會話中,而不是將它放在表單上?換句話說,是否有一種方法來複制屬性,而不必將我的Action中的代碼從表單複製到Session中? – JustinKSU 2012-01-06 22:42:07