Java 在struts2隐藏字段中设置数组对象
我使用的是struts2框架。我有一个操作,经过一些处理后,它将转发到一个结果JSP。 该操作的形式包含一个数组对象及其setter和getter。 我还使用模型驱动的界面,以便自动映射所有表单字段。 现在,在结果JSP中,我想在一个隐藏字段中设置该数组对象,以便在表单提交时再次映射该数组对象,但发生的事情是,我的数组元素是{1,2,3},隐藏字段标记将字符串对象中的数组转换为1,2,3,并将其设置为数组对象的第一个元素。我该怎么办Java 在struts2隐藏字段中设置数组对象,java,struts2,Java,Struts2,我使用的是struts2框架。我有一个操作,经过一些处理后,它将转发到一个结果JSP。 该操作的形式包含一个数组对象及其setter和getter。 我还使用模型驱动的界面,以便自动映射所有表单字段。 现在,在结果JSP中,我想在一个隐藏字段中设置该数组对象,以便在表单提交时再次映射该数组对象,但发生的事情是,我的数组元素是{1,2,3},隐藏字段标记将字符串对象中的数组转换为1,2,3,并将其设置为数组对象的第一个元素。我该怎么办 <s:iterator value="l
<s:iterator value="licenseType" status="stat1">
<s:hidden name="licenseType[%{#stat1.index}]" />
</s:iterator>
<s:iterator value="status" status="stat2">
<s:hidden name="status[%{#stat2.index}]" />
</s:iterator>
为了使应用程序有意义,需要将对象数组(例如整数数组)转换为字符串。您需要在action类中创建一个String属性,并在退出action类之前调用Arrays.toString并将该值设置为String属性 e、 g
如果arr1是要传递到jsp中的数组的名称,并且arr1也是要在下一个操作中将数组值传递到ie的操作中的数组的名称,那么您可以使用以下命令:
<s:iterator value="arr1" status="stat">
<s:hidden name="arr1[%{#stat.index}]" />
</s:iterator>
这是我的名为packageList的数组:
<tr>
<td>
<s:select theme="simple" list="%{#request.packagesList}" listKey="packageId" listValue="packageName" headerKey="0" headerValue="--Select--" name="packageDetail" id="packageDetail" />
</td>
</tr>
一个字段->一个值。如果您只想使用struts标签来实现这一点,那么您需要在数组上循环,并为数组中的每个项都有一个隐藏字段。如果所有这些字段都有相同的名称,那么表单将为同一个变量发送多个值-一个数组。是的,我的数组只有字符串,例如,我刚刚使用了1,2,3。谢谢你的帮助性回复。@Arpit现在工作了吗。如果它是upvote,则勾选答案。否它不工作它将数组设置为nullobject@Arpit我看不到你在帖子中提到的隐藏字段。同时发布你的动作类代码。您需要发布对解决问题有意义的代码。
public class MyAction extends ActionSupport
{
private String myHiddenFieldArr;
//getters and setters
public String myAction() throws Exception
{
//Do you logic
myHiddenFieldArr = Arrays.toString(your_Array);
}
}
<s:iterator value="arr1" status="stat">
<s:hidden name="arr1[%{#stat.index}]" />
</s:iterator>
<tr>
<td>
<s:select theme="simple" list="%{#request.packagesList}" listKey="packageId" listValue="packageName" headerKey="0" headerValue="--Select--" name="packageDetail" id="packageDetail" />
</td>
</tr>
public String getPackageDetail() {
return packageDetail;
}
public void setPackageDetail(String packageDetail) {
this.packageDetail = packageDetail;
}