当前位置: 代码迷 >> J2EE >> struts2中的多个action可以写到一个类吗?解决方案
  详细解决方案

struts2中的多个action可以写到一个类吗?解决方案

热度:80   发布时间:2016-04-22 01:48:06.0
struts2中的多个action可以写到一个类吗?
简单的用户注册登录案例吧,

之前我是一个action对应一个类,那个类中只有一个方法,比如:

XML code
<action name="Register" class="WU.WEBTutor.Action.StudentRegister"            method="register">            <result name="input">studentRegister.jsp</result>            <result name="success">success.jsp</result>        </action>        <action name="Login" class="WU.WEBTutor.Action.StudentLogin"            method="login">            <result name="input">studentLogin.jsp</result>            <result name="success">success.jsp</result>        </action>        <action name="FindAllStudents" class="WU.WEBTutor.Action.FindAllStudents"            method="findAllStudents">            <result name="success">showAllStudents.jsp</result>            <result name="input">studentLogin.jsp</result>        </action>


后来换了另一种方式,就是每个action对应一个类的相对的方法
XML code
<action name="Register" class="WU.WEBTutor.Action.StudentAction"            method="register">            <result name="input">studentRegister.jsp</result>            <result name="success">success.jsp</result>        </action>        <action name="Login" class="WU.WEBTutor.Action.StudentAction"            method="login">            <result name="input">studentLogin.jsp</result>            <result name="success">success.jsp</result>        </action>        <action name="FindAllStudents" class="WU.WEBTutor.Action.StudentAction"            method="findAllStudents">            <result name="success">showAllStudents.jsp</result>            <result name="input">studentLogin.jsp</result>        </action>


但是出现错误,就是采用后者的方式,每次action返回的都是“input”,而且action对应的类方法并没有执行(亲试)。

是不是由于每个action的对应的属性问题呢?
必须一个action对应一个类,而不是一个action对应一个方法吗?

------解决方案--------------------
用配置文件就这样
配置文件

XML code
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd"><struts>    <constant name="struts.devMode" value="true" />    <constant name="struts.i18n.encoding" value="UTF-8" />    <package name="cus" namespace="/" extends="struts-default">            <!--  action name="customerAction" class="com.zuxiang.action.Login" method="findAll" >            <result name="success">/list.jsp</result>        </action -->                <action name="customerAction2" class="com.zuxiang.action.Login"  method="login">            <result name="success">/index.jsp</result>        </action>    </package>    </struts>
------解决方案--------------------
你的form中有没有指定 method=""? 超链接就你的action!方法名,还有我有点奇怪,你为什么不用*号通配符?就写一个就行了比如

<action name="*" class="WU.WEBTutor.Action.StudentAction"
method="{1}">
<result name="input">student{1}.jsp</result>
  相关解决方案