0

Struts 2、タイル、および名前空間を使用していますが、リンクをクリックした後、メニューにもう一度名前空間が追加されるという問題があります。アクションと名前空間で struts タグ url を使用しています。ページが最初に表示されたとき、メニュー内のリンクは正しく、アクションの前に名前空間があります。リンクの 1 つをクリックすると、ページが再表示され、ソースは問題ないように見えますが、その上にカーソルを合わせると、Firefox に名前空間が含まれる URL が 2 回表示されます。IE

localhost/ar/customermaint は localhost/ar/ar/customermaint になります。最初に「ss」などの別の名前空間を持つリンクをクリックすると、localhost/ss/ar/customermaint になります。

私が間違っていることを知っていますか?それとも、タイルと名前空間に問題がありますか。

4

2 に答える 2

0

私は以前にこの問題に直面していました。アクションが呼び出されるたびに、名前空間が URL に追加され、見苦しくなります。

例:毎回名前空間からhttp://localhost:8080/RmAirlines/user/user/user/user/user/loginアクションを呼び出す場合loginuser

名前空間を「/」に設定することも理想的な解決策ではありません。

解決策:のがあり、その中に名前付きの があると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>

login.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 に答える
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 に答える