關於問題“404 No result defined for action XXXAction and result input ”的見解


      在最近的一次JavaEE項目開發中,項目架構中有用到Struts2 ,遇到了一個以前從來沒有遇到過的小難題,困擾了我很久,今天我打算把該問題剖析一下。

問題是這樣的,在配置路徑以及跳轉路徑均不存在問題的情況下,從jsp頁面點擊到Action的鏈接,頁面會報這個錯:404 No result defined for action XXXAction and result input ,並且web服務器后台並沒有報錯。

可能的原因有如下幾方面:

1. 頁面中傳入的值與業務實體或Action中屬性的類型不一致

例如:后台定義的是java.util.Date 類型,前台隨便輸入的數據,Struts2的攔截器無法將前台的數據按照后台要求的類型給你轉化,所以頁面報錯。

2. 頁面中用到的控件名稱與后台Action中的屬性名稱不一致

這個很好理解,名稱不匹配,Struts2是不會給Action中的屬性賦值的。

3. 可能涉及到Struts2bug, 例如前台頁面:

有一個輸入控件:

<input type=”text” name=”soldMount” value=”<s:sproperty  value=”%{batch.soldMount}” />” />

      當Struts2的攔截器在解析以“soldMount”命名的輸入控件的時候,無法將<s:sproperty  value=”%{batch.soldMount}” />帶來的值,傳送過去,而只是簡單的將其作為字符創來傳遞給Action,而后台Action要接受的數據類型卻是Long 或者int ,所以會發生如原因1的問題,結果也會報錯,這極有可能是Struts2bug,所以應該盡量避免上述用法。

      解決辦法:

詳細檢查是否有原因12所述的問題,若果這是問題3類型,解決辦法如下:前台僅僅只是作為顯示的工具,要想辦法把后台要獲取的值從后台程序中獲取,而不從前台中獲取,就不會發生類型轉換錯誤了,頁面也會正常顯示的。


免責聲明!

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



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