struts2中的namespace意義


<package name="user" namespace="/user" extends="struts-default">
         <action name="logon" class="cn.net.cipe.ots.user.actions.UserAction" method="logon">
            <result name="success">/JSP/main.jsp</result>
            <result name="input">/JSP/login.jsp</result>
            <result name="error">/JSP/login.jsp</result>
        </action>

</package>

說明:

此user的意思是WebRoot下必須有一個名為user的文件夾。

那么如果在jsp里這樣三種寫法:

第一種

<form action="logon.action" >

.....

</form>

第二種

<form action="/user/logon.action" >

.....

</form>

第三種

<s:form action="logon.action" namespace="/user" >

.....

</s:form>

第一種寫法可以通過測試,原因是FilterDispatcher會去package的根目錄及下面的子目錄去搜logon這個action

第二種寫法是正規寫法,可以通過測試,因為FilterDispatcher把form的跳轉分解為logon.action和nanespace=/user,然后在package下直接命中namespace為"/user"的那個包。

第三種寫法,很不幸,不能通過測試,原因是s:form這個標簽居然不會在生成html頁面時候把namespace的值給加到form 的action屬性里面去。。。。。

那么與第三種情況正相反,如果你用s:url的話,一定要寫namespace,見下例:

<s:url href="/user/logon.action"/>這種寫法極容易出錯,原因是不寫namespace的話,產生html代碼時候很混亂

<s:url href="logon.action" namespace="/user"/>正確寫法!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM