struts-config.xml中input问题?

       想请教这样一个问题,虽然在网上找到一种方法,但感觉这种会造成struts-config.xml里的代码繁冗,看大家有没有其它的办法:

问题:
  现有两个页面(用户注册页面、用户资料修改页面)指向同一Action(继承自DispatchAction)和ActionForm(验证信息基本相同),当ActionForm验证失败时,分别需要返回到注册页面和修改页面,但struts-config.xml中的input只能设置一个值,这时怎么办?

网上找到的答案是,再复制一个action,只是把其中的path与input改掉:
 

XML code
< action path ="/regEmployee" input ="/registerEmployee.jsp" parameter ="method" name ="employeeForm" attribute ="employeeForm" scope ="request" validate ="true" type ="com.xyh.emp.EmployeeDispatchAction" > < forward name ="detail" path ="/detailEmployeeInfo.jsp" /> </ action > < action path ="/editEmployee" input ="/editEmployee.jsp" parameter ="method" name ="employeeForm" attribute ="employeeForm" scope ="request" validate ="true" type ="com.xyh.emp.EmployeeDispatchAction" > < forward name ="detail" path ="/detailEmployeeInfo.jsp" /> </ action >



  因为我一个模块建立一个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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值