SSH出錯之-- No result defined for action


 

 No result defined for action

----

 一、錯誤原因

這個錯誤可能是由很多原因引起的

1)可能是輸入的變量為空值

輸入的變量為空值,action會轉到input里去,input又沒有。錯誤。

2)配置文件寫錯了

二、輸入的變量為空值

三、配置文件寫錯

我看了半天,我的action里面明明就有result的定義,但是無論我怎么改,運行到execute中return的時候,它死活找不到頁面。

錯誤的:(按理說省略namespace不應該是錯的,但是事實如此,我也無法啊。)

    <package name="money"  extends="struts-default">

        <action name="transfer"     class="com.meetcomet.action.transferAction">
            <result name="input">/index.jsp</result>
            <result name="success">/welcome.jsp</result>
            <result name="error">/fail.jsp</result>
        </action>
</package>

 

正確的:

就是命名空間的問題。

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

        <action name="transfer"     class="com.meetcomet.action.transferAction">
            <result name="input">/index.jsp</result>
            <result name="success">/welcome.jsp</result>
            <result name="error">/fail.jsp</result>
        </action>
</package>

 如果不寫命名空間,默認的命名空間為"".

引用一段話:

默認的命名空間“ namespace="" ”, 根命名空間  namespace="/" ”。   

    <package name="test" extends="struts-default"> ,如果未指定命名空間,則命名空間默認為  namespace="" ”。

    默認命名空間里的Action可以處理任何命名空間下的Action請求。例如,如果存在URL為/barspace/bar.action的請求,並且/barspace的命名空間下沒有名為bar的Action,則默認命名空間下名為bar的Action也會處理用戶請求。但根命名空間下的Action只處理根命名空間下的Action的請求,這是根命名空間和默認命名空間的區別。     命名空間只有一個級別。如果請求的URL是/bookservice/search/get.action,系統將先在/bookservice/search的命名空間下查找名為get的Action,如果在該命名空間內找到名為get的Action,則由該Action處理用戶的請求;如果未找到,系統將直接進入默認的命名空間中查找名為get的Action,而不會在/bookservice的命名空間下查找名為get的Action 

這段話是正確的。我一開始沒有弄清楚name 和namespace的區別,訪問的時候用的URL是"/money/transfer",沒有設置namesapce,照常能訪問。但是,找不到result的頁面。如果設置了namespace的空間為namespace=“/money",則可用”/money/transfer"來訪問。

name和namespace的區別

name 用來指定包的名稱。包要名稱干什么呢?我覺得好處是能讓包能繼承。比如<package name="test" extends="struts-default"> 這個就是繼承了struts-default這個包。如果需要,可以繼承test這個包。

 

   


免責聲明!

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



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