2017-06-06 57 views
-1

當我按下更新按鈕時,我試圖將JSP頁面中的值傳遞給我的Action類。使用struts2更新值表格不起作用

在這種情況下,我在動作類中創建了一個名爲value的字符串列表,其中包含getter和setter。

我的問題是,試圖修改JSP輸入字段,然後按更新時,value保持在動作類相同(其初始值)。

例如:

v[0] = "zero" 
v[1] = "something" 
v[2] = "true" 

在我的表單中我已經改變了v[2]輸入文本"false"然後按下更新;當在​​中打印時,v[2]仍然是"true"

更新:我重寫JSP代碼,使用Struts2的標籤,而不是小腳本

<form name="propertiesForm" method="post" action="<s:url value='/update.action'/>" > 
     <table> 
       <tr> 
      <th>Property</th> 
      <th>Value</th> 
       </tr> 
      <s:iterator value="%{propertiesForm.properties}" status="rowStatus"> 
     <tr> 
     <td><s:property value="%{properties[#rowStatus.index].name}"/></td> 
     <td><s:textfield name="value[%{#rowStatus.index}]" value="%{propertiesForm.getValue(#rowStatus.index)}"/></td> 
     </tr> 

     </s:iterator> 
     <tr> 
      <td><input class="buttons" type="submit" value="Update" /></td> 
     </tr> 
    </table> 
</form> 
+0

在Action中是否有'setValue(String [] v)'? – fustaki

+0

您是否看到日誌顯示當您按下'update'按鈕時'update'操作實際上會被調用,如果是,您能否顯示'update'操作。 – fangxing

+0

@fustaki是的,我有行動類中的setter和getter值 – Ariana

回答

0

表單域由其name屬性的約束。它應該是一個合適的OGNL表達式,由params攔截器對valueStack進行評估。當填充參數時,動作bean應該在valueStacktop上,如果你的動作不是模型驅動的,那麼如果動作bean具有相應的屬性訪問器,它將被填充。

問題出在您的代碼中,因爲您使用腳本(非常不鼓勵,請參閱How to avoid Java code in JSP files?),並且在代碼name="<%="value[" + i + "]"%>中存在一個錯誤。


尋找的代碼,你最近有更新你的問題

<s:textfield name="value[%{#rowStatus.index}]" value="%{propertiesForm.getValue(#rowStatus.index)}"/> 

我看到價值來自propertiesForm屬性,但該表單域綁定到action屬性。提交表單時,可能沒有相應的設置器來填充屬性值。我建議將值綁定到propertiesForm,因此您甚至不需要預先填充value,因爲name屬性評估的值。

<s:textfield name="propertiesForm.value[%{#rowStatus.index}]" />