重定向url时Struts2名称空间发生变化

时间:2012-12-17 11:42:26

标签: struts2 struts

我有包含应用程序创建方法的动作类,如果应用程序保存成功则返回“成功”。正如你可以使用我的struts.xml,我正在重定向到应用程序只读模式。当我通过“tenantId”(在会话中包含)重定向到只读操作默认名称空间覆盖时

这是重定向网址

http://localhost:8080/scandium/tenantId/applicationView.html!tenantId?applicationId=40

为什么会有“!”在网址? 它如何将默认命名空间更改为“tenantId”?

任何人都可以帮我解决这个问题吗?

    <struts>

        <constant name="struts.devMode" value="true"/>
        <constant name="struts.action.extension" value="html"/>

        <package name="default" namespace="/" extends="struts-default">
             <action name="createApplication" class="com.action.ApplicationAction" method="create">
                        type="tiles">/applicationReadOnlyBody.tiles</result>-->
                        <result name="success" type="redirectAction">
                            <param name="actionName">applicationView.html</param>
                           <!-- <param name="namespace">/</param> -->
                            <param name="applicationId">${appId}</param>
                        </result>
                        <result name="input" type="tiles">/new-application.tiles</result>
                </action>

              <action name="applicationView" class="com.action.ApplicationReadOnlyAction" method="viewApplication">
                    <result name="success" type="tiles">/applicationReadOnlyBody.tiles</result>
              </action>

    </package>

</struts>

提前谢谢你,

Udeshika

2 个答案:

答案 0 :(得分:0)

它是你正确的struts.xml文件吗?您的struts文件似乎缺少tile的结果类型

<result-types>
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>

你的struts.xml应如下所示:`

<struts>

        <constant name="struts.devMode" value="true"/>
        <constant name="struts.action.extension" value="html"/>

        <package name="default" namespace="/" extends="struts-default">

<result-types>
    <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
        </result-types>

             <action name="createApplication" class="com.action.ApplicationAction" method="create">
                        type="tiles">/applicationReadOnlyBody.tiles</result>-->
                        <result name="success" type="redirectAction">
                            <param name="actionName">applicationView.html</param>
                           <!-- <param name="namespace">/</param> -->
                            <param name="applicationId">${appId}</param>
                        </result>
                        <result name="input" type="tiles">/new-application.tiles</result>
                </action>

              <action name="applicationView" class="com.action.ApplicationReadOnlyAction" method="viewApplication">
                    <result name="success" type="tiles">/applicationReadOnlyBody.tiles</result>
              </action>

    </package>

</struts>

`

在struts2中,redirectAction更改为重定向。进行更改尝试并告诉我

答案 1 :(得分:0)

您的配置中存在一些错误。一个“浮动”类型=“tile ...和一个封闭的(但从未打开过)html注释标记。

改变这个:

<action name="createApplication" 
        class="com.action.ApplicationAction" 
        method="create">
        type="tiles">/applicationReadOnlyBody.tiles</result>-->

到此:

<action name="createApplication" 
        class="com.action.ApplicationAction" 
        method="create">

看看它是否有效或以某种方式改变......