Struts2 - 可以使用相同的操作类在struts.xml中重复操作名称,但是对于不同的方法?

时间:2014-07-16 22:18:22

标签: struts2 struts-config

我的想法是使用Struts2以下面的方式使用单个Action类和多个方法执行操作:

查看角色操作:manage/roles.action?method%3Aview=View 添加角色操作:manage/roles.action?method%3Aadd=Add

通过调用提交按钮来调用URL,如下所示:test.jsp:

<s:form namespace="/manage/" action="roles" method="get" >
    <s:submit method="view" value="View" />
    <s:submit method="add" value="Add" />
    <s:submit method="edit" value="Edit" />
    <s:submit method="delete" value="Delete" />
</s:form>

在struts.xml中,我配置了:

 <package name="portal" namespace="/manage/" extends="struts-default">
    <action name="home">
        <result>/WEB-INF/jsp/manage/roles/test.jsp</result>
    </action>

    <action name="roles" class="struts2.actions.RoleAction" method="view">
        <result name="success">/WEB-INF/jsp/manage/roles/viewRoles.jsp</result>
    </action>

    <action name="roles" class="struts2.actions.RoleAction" method="add">
        <result name="input">/WEB-INF/jsp/manage/roles/addRole.jsp</result>
        <result name="success">/WEB-INF/jsp/manage/roles/viewRoles.jsp</result>
    </action>

不幸的是,当我按下View按钮时,它显示了“add”方法的结果JSP。为什么呢?

1 个答案:

答案 0 :(得分:0)

因为您有两个名称相同的操作roles

您如何区分...... /roles/roles

他们应该有不同的名称 - 不同的网址。由于它们是相同的URL,因此最后配置的URL将获胜;你正在覆盖自己的定义。如何给他们提供不同的名称,例如/addrole/viewrole,或命名他们,例如/roles/add/roles/view等?