0

我正在使用 struts 2、tile 和命名空间,并且遇到一个问题,即在我单击链接后,菜单会再次附加命名空间。我正在使用带有操作和命名空间的 struts 标记 url。当页面第一次显示时,菜单中的链接是正确的,在操作之前有命名空间。单击其中一个链接后,页面重新显示,虽然源看起来不错,但当我将鼠标悬停在它上面时,firefox 会显示带有名称空间的 url 两次。IE

localhost/ar/customermaint 变为 localhost/ar/ar/customermaint。如果我首先单击了具有不同名称空间(例如“ss”)的链接,那么它将变为 localhost/ss/ar/customermaint。

知道我做错了什么吗?或者是瓷砖和命名空间的问题。

4

2 回答 2

0

为避免这种情况,请始终遵循一个简单的原则。

对于所有命名空间声明,使用斜杠“/”后跟命名空间名称。这样,它就不会在新的 url 中附加较早的命名空间。

struts 假设,如果您没有在新命名空间中指定“/”,它会尝试在当前使用的命名空间中找到它。如果您在命名空间名称之前指定“/”,它将把它作为一个根命名空间。

例子:-

<package name="default" namespace="/nsp" extends="struts-default">
    <action name="validate" class="login.LoginAction">
    <result name="success">/home.jsp</result>
    <result name="login">/login.jsp</result>
    </action>
</package>
<package name="cricket" namespace="/cricket" extends="struts-default">
    <action name="findcaptain" class="cricket.CaptainAction">
    <result>/showCaptain.jsp</result>
    </action>
</package>

查看我的每个包声明,我使用以斜杠为前缀的命名空间名称。即 /nsp 和 /cricket)。这就是我们可以避免这个命名空间附加问题的方法。

于 2022-01-04T10:43:31.550 回答
0

我以前遇到过这个问题。每次调用操作时,命名空间都会附加到 URL 中,看起来很难看

示例:每次从命名空间http://localhost:8080/RmAirlines/user/user/user/user/user/login调用操作loginuser

将命名空间设置为“/”也不是一个理想的解决方案。

解决方案:假设is并且namespace其中有一个命名(在您的 中)。然后,无论您在哪里调用,都将其称为(或) - 即在命名空间之前放置一个“/”将节省您的时间!package"/user"action"login"struts.xmlactionaction="/user/login"action="/user/login.action"

例子:

struts.xml

<package name="userManagement" namespace="/user" extends="struts-default">      
        <action name="login" class="com.rm.airlines.action.Login">
            <result name="success">/user.jsp</result>
            <result name="login">/login.jsp</result>
        </action>       
</package>

登录.jsp

<s:form action="/user/login">
        <s:textfield label="Email" key="email" />
        <s:password label="Password" key="password" />
        <s:submit />
</s:form>
于 2015-09-16T04:46:11.257 回答