我正在使用Struts2 Web应用程序,当前正在遇到表单绑定问题。从jsp到action类的绑定不起作用。
场景是我正在从上一个操作中设置一个列表。在当前的jsp中,我遍历该列表并在jsp中的表中打印值。由于需要,我应该使这些字段可编辑,以便用户可以编辑显示的值并将更新的值提交到下一个动作。
问题是我从jsp编辑的值未绑定到动作类中的列表。我已经尝试了多种方法,但是到目前为止还没有运气。以下是我尝试过的方法。
我尝试值的第一种方法不受约束:
<s:iterator value="list1" var="sVO" status="rowStatus"> <tr onclick="SelIndex('<s:property value="itm_id"/>');"> <td><s:property value="itm_id"/></td> <td><s:date name="proc_d" format="MM/dd/YYYY"/></td> <td><span style="display:none;"><s:property value="pln_n_n"/></span><input type="text" size = "8" value="<s:property value="pln_n_n"/>"/></td> <td><span style="display:none;"><s:date name="trd_d" format="MM/dd/YYYY"/></span><input type="text" size = "8" class="dateFilter" value="<s:date name="trd_d" format="MM/dd/YYYY"/>"/></td> <td><s:select theme="simple" name="list1[%{rowStatus.index}].vari_ty" id="tranType" list="liTTypes" headerKey="None" value="vari_ty" listKey="key1" listValue="value1" /></td> <td><span style="display:none;"><s:property value="description"/></span><input type="text" size = "8" value="<s:property value="description"/>"/></td> <td><s:property value="getText('format.money',{quantity})"/></td> <td><span style="display:none;"><s:property value="getText('format.money',{price})"/></span><input type="text" size = "10" value="<s:property value="getText('format.money',{price})"/>"/></td> </tr> </s:iterator
我尝试值不受约束的第二种方法:
<s:iterator value="list1" var="sVO" status="rowStatus"> <tr onclick="SelIndex('<s:property value="itm_id"/>');"> <td><s:property value="itm_id"/></td> <td><s:date name="proc_d" format="MM/dd/YYYY"/></td> <td><span style="display:none;"><s:property value="pln_n_n"/></span> <input type="text" name="list1[%{#rowStatus.index}].pln_n_n" value="<s:property value="pln_n_n"/>"/></td> <td><span style="display:none;"><s:date name="trd_d" format="MM/dd/YYYY"/></span> <input type="text" size = "8" name="list1[%{#rowStatus.index}].trd_d" class="dateFilter" value="<s:date name="trd_d" format="MM/dd/YYYY"/>"/></td> <td><s:select theme="simple" name="list1[%{rowStatus.index}].vari_ty" id="tranType" list="liTTypes" headerKey="None" value="vari_ty" listKey="key1" listValue="value1" /></td> <td><span style="display:none;"><s:property value="description"/></span> <input type="text" name="list1[%{#rowStatus.index}].description" size = "8" value="<s:property value="description"/>"/></td> <td><s:property value="getText('format.money',{quantity})"/></td> <td><span style="display:none;"><s:property value="getText('format.money',{price})"/></span> <input type="text" name="list1[%{#rowStatus.index}].price" size = "10" value="<s:property value="getText('format.money',{price})"/>"/></td> </tr> </s:iterator>
以下是我的动作课
public class testAction extends BaseAction { private List<ProcessVO> list1 = null; // getters and setters for list1 public String ListPage() throws AppException { String strReturn = "SUCCESS"; // This the method from which the list1 is populated } public String ListPageSave() throws AppException { String strReturn = "SUCCESS"; // This the method where i need the updated values from list1 // values are not getting bound when this method is called from the page which is having Iterator tag, }
}
BaseAction: public class BaseAction extends ActionSupport implements SessionAware, ServletRequestAware, ServletResponseAware, ServletContextAware { /** * */ private static final long serialVersionUID = 1L; /** * HTTP Request object.
} ProcessVO包含属性以及每个属性的获取器和设置器。
ProcessVO
谁能告诉我这里是什么问题。我正在使用需要更新的相同list1对象。任何帮助对我来说都是非常有用的,因为我一直困扰着这个问题。
<input type = "text" name = "list1[%{#rowStatus.index}].pln_n_n" value = "<s:property value="pln_n_n"/>"/>
如果您使用HTML标记,OGNL将无法在其中使用。
您需要使用<s:property/>以下任一方法:
<s:property/>
<input type = "text" name = "list1[<s:property value="%{#rowStatus.index}"/>].pln_n_n" value = "<s:property value="pln_n_n"/>"/>
或使用Struts2标签(OGNL在其中工作):
<s:textfield name = "list1[%{#rowStatus.index}].pln_n_n" value = "pln_n_n" />
旁注:
value
name
"SUCCESS"
"success"
SUCCESS