2012-06-01 18 views
0

如何防止表單bean域在提交驗證時被重置。這裏的東西是,這個表單字段不是jsp上的輸入字段。它顯示爲正常的HTML類文本的..Struts Form bean在提交時不重置表單域

<div class="label"> 
      <fmt:message bundle="${labels}" key="gender" /> 
</div> 
<div class="data"> 
     <bean:write property="gender" name="infoForm"/> 
</div> 

正在發生的事情是,當我點擊提交按鈕,如果有任何驗證錯誤,其他所有輸入字段填入再次但是這一個性別字段是不是所示。

我的猜測是因爲這裏的性別屬性不是輸入字段,當表單在驗證之前或之後重置時,性別值未填充。我對麼?如果是這樣,我能做些什麼來不重置這個特定領域?

回答

1

如果此信息來自一個形式在以前的頁面(例如,如果您正在實施一個嚮導,其中一個大的形式被分裂成幾頁),那麼你可以使用表單隱藏字段存儲信息並重新提交每個後續表格。

如果這只是來自服務器的信息(例如從數據庫或從其他輸入字段計算),那麼您應該再次從數據庫中獲取信息(或重新計算它)並將其重新放入表格。

+0

(或者,如果它已經存在正確顯示,正如OP聲稱的那樣)。 –

+0

@JB Nizet:謝謝你的回覆。信息來自數據庫。那麼在提交之後,我是否再次將它重新放在表單中?如果有任何驗證錯誤,表單將被髮回查看並且它不會通過操作類。 – RKodakandla

+0

這就是爲什麼Struts 1裏吸的原因之一:驗證應採取的行動的形式來處理,而不是。但是你可以禁用自動錶單驗證,自己調用validate方法中的動作,並填充表格並轉發到輸入前進。如果可以的話,肯定切換到條紋或Spring MVC的至極的,恕我直言,確實比Struts 1更好。 –

0

爲了解決這個問題,我已經添加了相同的參數隱藏的表單字段...

<html:hidden property="gender" name="infoForm"/> 

,在驗證復位後保留的字段值...