9

我正在使用 Struts2。我有一个对话框,其中包含通过“search_users”操作更新的人员列表。在此列表旁边,我有一个表单,您可以在提交表单时通过调用“add_user”操作来添加另一个人。

我想要做的是,一旦执行了 add_user 操作,列表就会使用“search_user”操作进行更新。

我尝试在 struts.xml 中使用结果类型“重定向”,如下所示:

<action name="search_users" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLSubequipo" method="searchUsers">
            <result name="success">list.jsp</result>
        </action>

        <action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser">
            <result name="success" type="redirectAction">search_users</result>
        </action>

但这不起作用。我究竟做错了什么?有什么我不知道的东西我应该添加到 struts.xml 文件中吗?

这是我得到的错误信息:

"Caused by: There is no result type defined for type 'redirect-action' mapped with name 'success'.  Did you mean 'redirectAction'? - result - file:/.../struts.xml:59:44
    at ..."
4

3 回答 3

16

当前配置:

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser">
   <result name="success" type="redirectAction">search_users</result>
</action>

根据文档正确的格式是:

<action name="add_user" class="org.apache.struts.gestion_edt.controller.adm_proyectos.BLTipoEntregable" method="addUser">
    <result type="redirectAction">
        <param name="actionName">search_users</param>
        <!--<param name="namespace">/secure</param> This is optional if your action where you are redirecting is in the same namespace you can leave this, if your action is in some other name space then provide the namespace--> 
    </result>
</action>
于 2012-06-08T17:22:05.117 回答
2

当前使用Struts 2.3.20,这有效:

<result type="redirectAction">myAction</result>

我在以前的版本中没有确认。

于 2015-02-03T17:41:10.510 回答
0

我不是 Struts 大佬,但根据文档,您的重定向在语法上似乎不正确:http ://struts.apache.org/2.1.6/docs/redirect-action-result.html

<package name="public" extends="struts-default">
    <action name="login" class="...">
        <!-- Redirect to another namespace -->
        <result type="redirect-action">
            <param name="actionName">dashboard</param>
            <param name="namespace">/secure</param>
        </result>
    </action>
</package>
于 2012-06-08T15:09:22.270 回答