我有一个只有一个复选框的表单,用户需要选择一些选项并选择一个提供的按钮。其中两个按钮应将所选选项返回到触发页面的同一操作(第一个操作),另一个按钮需要将选项发送到另一个操作(下一个操作)。
由于我无法为单个复选框定义两个单独的表单,目前我将所有按钮重定向到First Action并尝试从那里重定向到Next Action。因此,我使用param标签传递所需的变量,但我无法在第二次操作中访问它。
目标是为一个复选框设置三个单独的提交按钮。
我已将我的代码与this进行了比较,虽然它们似乎相同,但我的代码不起作用。
表格
<form name="FirstActionFrom" method="POST" action="doActions">
Check box goes here
<input id="ThisBtn1" type="submit" name="req" value="This1"/> 
<input id="ThisBtn2" type="submit" name="req" value="This2"/>
<input id="NextBtn" type="submit" name="req" value="Next"/>
</form>
第一行动:
.....
private List<Long> selectedOptions;
{
System.err.println("size of options:" + this.selectedOptions.size());
if req is equal to Next then
return "NextAction"
else do whatever is required
}
getter and setter go here
}
struts.xml中
<result name="NextAction" type="redirectAction">
<param name="actionName">NextAction</param>
<param name="namespace">/Users/Next</param>
<param name="selectedOptions">${selectedOptions}</param>
</result>
下一步行动
.....
private List<Long> selectedOptions;
... {
System.err.println("size of options:" + this.selectedOptions.size()); <<Always shows Zero
return "showThis"
}
getter and setter go here
}
选择单个选项后的结果
SEVERE : size of options:1
SEVERE : size of options:0
答案 0 :(得分:-1)
似乎你无法将集合传递给其他操作,需要使用会话或字符串类型的变量。请查看以下answer。
我建议不要使用会话或类型字符串变量,而是从第一个操作中调用下一个操作的方法,并在完成所有计算后,将重定向请求发送到其他方法以返回其结果页面。
答案 1 :(得分:-1)
可以通过JSP页面中更改表单操作轻松完成。
您可以使用 JavaScript更改操作名称。通过这样做,你可以映射 jsp使用struts.XML到另一个类。您只需要 Struts.XMl。
中的新操作定义在bean类中,你就是这样 想要创建一个带有列表名称和相同类型的变量,最后 创建Getters和setter。你将获得所有的价值 bean中的jsp,( ,无论类型 )(struts为你映射值)。
因为你已经说过你已经在一个动作中得到了列表。我没有进入那个部分。
现在,您可以从JSP中重定向bean类(Action)。
Jsp文件
<s:form id="formid" action="action1">
/.../
<s:hidden name="lstVariablename"/>
<s:hidden name="lstVariablename"/>
<s:hidden name="lstVariablename"/>
<s:hidden name="lstVariablename"/>
/.../
</s:form>
现在在JSP中创建一个JavaScript函数
<script>
function changeAction(){
document.formid.action =action2
}
</script>
<强> struts.xml中强>
<action name="action1"
class="com.XXX.Action1"
method="methodOfAction1">
<result name="success">/name.jsp</result>
</action>
<action name="action2"
class="com.XXX.Action2"
method="methodOfAction2">
<result name="success">/name.jsp</result>
</action>
Bean类(Action)内部
private List<String> lstVariablename;
/....Getters and Setters............