日期:2014-05-19  浏览次数:20728 次

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}"&