首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

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

2012-04-22 
struts2中的多个action可以写到一个类吗?简单的用户注册登录案例吧,之前我是一个action对应一个类,那个类

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>


<result name="success">success.jsp</result>
</action>

 

热点排行