S2SH 整合中action 的值都是 Null
public class MembersAction extends ActionSupport { public String goToReg(){ return SUCCESS; } public String regist(){ System.out.println(names); System.out.println(membersInfo); System.out.println(getMembersInfo().getNickName()); return SUCCESS; } private String names; private MembersInfo membersInfo; public MembersInfo getMembersInfo() { return membersInfo; } public void setMembersInfo(MembersInfo membersInfo) { this.membersInfo = membersInfo; } public String getNames() { return names; } public void setNames(String names) { this.names = names; } }
<struts> <constant name="struts.locale" value="en_GB" /> <constant name="struts.objectFactory" value="spring"/> <package name="members" extends="struts-default"> <action name="goToReg" class="membersAction" method="goToReg"> <result name="success">/HTM/MyJsp.jsp</result> </action> <action name="regMember" class="membersAction" method="regist"> <result name="success">/HTM/success.htm</result> <result name="error">/HTM/error.htm</result> <result name="wait">/HTM/wait.htm</result> <interceptor-ref name="execAndWait"/> <interceptor-ref name="tokenSession"/> </action> </package> </struts>
<bean id="membersAction" class="eve.members.action.MembersAction" scope="prototype"></bean>
<form action="regMember!regist.action" method="post"> <s:token/> <input type="text" name="names"><br> <input type="text" name="membersInfo.nickName"><br> <input type="submit"><br> </form>
同 luckaway
在struts.xml用自己的拦截器时,默认的拦截器就不起作用了。你必须自己添加默认的拦截器。
struts2的取值封装是基于 默认拦截器来实现的。
JSP的form action请求应该与struts里的action标签的name属性一致,像你的应用应该为regMember.action或者goToReg.action
你应该用Struts2的标签,而不是HTMl的标签
这两个配置删除掉吧,只要你自己加上拦截器,struts默认的拦截器链就不会执行了!
默认的拦截器链包含有一个设置参数的拦截器,或者你把那个拦截器的也显示的加到配置上!