想请教这样一个问题,虽然在网上找到一种方法,但感觉这种会造成struts-config.xml里的代码繁冗,看大家有没有其它的办法:
问题:
现有两个页面(用户注册页面、用户资料修改页面)指向同一Action(继承自DispatchAction)和ActionForm(验证信息基本相同),当ActionForm验证失败时,分别需要返回到注册页面和修改页面,但struts-config.xml中的input只能设置一个值,这时怎么办?
网上找到的答案是,再复制一个action,只是把其中的path与input改掉:
因为我一个模块建立一个Action(DispathAction),如果多个需要验证的页面都指向这个action,难道在struts-config.xml里要建立多个相似的action。
求更好的解决办法中……
————————————————解决方案
<action path="/*Person" type="cn.itcast.PersonAction" scope="request" input="/{1}.jsp" parameter="method">
<forward name="list" path="/WEB-INF/pages/list.jsp"/>
</action>
使用通配符,只不过命名的时候*的位置跟{1}保持一致.
我写的这个action继承dispatchAction,parameter=method
假如里面有add方法和edit方法()
访问add方法的时候,使用这个地址:/addPerson.do?method=add-->这个时候input就是/add.jsp
访问edit方法的时候,使用这个:/editPerson.do?method=edit-->此时input就是/edit.jsp
访问add和edit对象的input分别是/add.jsp和/edit.jsp,这不就是楼主要的吗?
楼主的代码可以修改成这样()
<action
path="/*Employee"
input="/{1}Employee.jsp"
parameter="method"
name="employeeForm"
attribute="employeeForm"
scope="request"
validate="true"
type="com.xyh.emp.EmployeeDispatchAction">
<forward name="detail" path="/detailEmployeeInfo.jsp" />
</action>
这样写你的命名就要规范下
path="/regEmployee"
input="/registerEmployee.jsp"
红色部分要保持一致,要访问regEmployee..你的页面名字就要是regEmployee.jsp