2010-03-31 100 views
0

我是Struts的新手,並且繼承了一個問題。我試圖將包含在同一個表單元格中的3個值從JSP傳遞給我的ActionForm類。第一個值(和JSP中的其他值)可以正常工作,但由於某種原因,其他兩個值不會。我有適當的getter和setter,但只有第一個(newrecnum)出現,另外兩個是空的。是否有限制只傳遞第一個值?或者還有其他問題嗎?這裏是JSP代碼:無法將JSP值傳遞給ActionForm(Struts)

<td> 
<html:text size="10" maxlength="10" property="newrecnum"/><br> 
<html:text size="5" maxlength="5" property="newrectime"/> 
<html:select property="newreccode" disabled="true"> 
    <html:option value="YES">YES</html:option> 
    <html:option value="NO">NO</html:option></html:select> 
</td> 

如果需要,我也可以包含ActionForm代碼。謝謝!

回答

2

第一件讓我感到震驚的事實是,您在選擇字段上有disabled="true"。提交表單時,禁用的任何輸入都不會發送到服務器。請求中沒有參數意味着Struts在ActionForm實例中沒有任何東西要綁定(所以屬性將保持不變,在你的情況下爲null)。

關於其他領域,請檢查您是否真正定義了獲取者和設置者(是否公開,名稱完全匹配)。它應該是這樣的(我用String類型去爲簡單起見):

public void setNewrectime(String val) {...} 
public String getNewrectime() {...} 

public void setNewreccode(String val) {...} 
public String getNewreccode() {...} 

既然你說你繼承了這個東西,你肯定是Struts的確實的形式參數綁定到你的ActionForm實例或是手工完成的,你必須將代碼添加到某些方法中(我在問,因爲多年來我看到Struts應用程序被濫用)。

+0

謝謝你的迴應dpb。我發現了這個錯誤。在另一個字段中輸入某個值後,禁用字段實際上會更改爲「false」,所以這不是問題。 這是一個setters名稱不正確匹配的情況。我發誓我昨天檢查了這一百萬次。我想我只是需要一點點時間才能看到它。再次感謝! – tacotime 2010-04-01 13:36:54