2012-08-08 18 views
0

我具有以下設置:JSFpage導航失敗:背襯bean方法沒有找到

  • testBean.java與方法public String getResult(),它返回"success"

  • test.xhtml

    <h:commandLink action="#{testBean.result}" value="testlink" /> 
    
  • 裏面faces-config.xml中下面的導航規則:

    <navigation-rule> 
    <from-view-id>/views/test.xhtml</from-view-id> 
    <navigation-case> 
        <from-outcome>success</from-outcome> 
        <to-view-id>/views/nextpage.xhtml</to-view-id> 
        <redirect /> 
    </navigation-case> 
    

我檢查了導航一般通過簡單地把 「成功」 直接進入action屬性(作品)的作品。另外,將testBean.result作爲outputText正確顯示「成功」。

但是,當點擊鏈接時,我得到一個「服務器內部錯誤」,只能重新加載頁面。該日誌顯示了以下文本的javax.el.MethodNotFoundException:

Method not found: [email protected]()

我很困惑,當神祕@ 81de8從何而來。這是問題的原因,只是其他地方某些不匹配的症狀或一些完全正常的幕後魔法?任何人都可以找出爲什麼commandLink中的調用失敗,而不是在outputText中?或者指出我應該檢查和測試的其他事情?

由於提前, 路易絲

編輯:Java方法被命名的getResult(不會導致)和錯誤代碼指出對方法的結果(不是字符串)。那些在寫完這個問題上的錯誤,是在一天的工作結束後提出的;)對不起。

回答

3

您沒有運行您認爲正在運行的代碼。

你說,你已經宣佈

action="#{testBean.result}" 

但例外是在告訴你,實際上運行的代碼具有

action="#{testBean.string}" 

也許這是從以前的一個吃剩的企圖還是你打開了錯誤的頁面?驗證,清理,重建和重新部署,此問題應該消失。


我很困惑,當神祕@ 81de8來自

它的類的實例只是哈希碼。另見Object#toString() javadoc。你會看到相同的字符串格式

System.out.println(new TestBean()); 
+0

這是我編寫測試用例時的錯誤。我從一些中間測試中複製了錯誤消息,然後我將其中一些內容重新命名爲清晰。我以爲我已經檢查了這個問題,但是當我編寫它的時候,它已經很晚了;)和哈希碼解釋+1。 – Louise 2012-08-09 07:29:38

+1

@Louise:那麼你在其他方面一直不小心。不管eljunior表明什麼都不可能導致特定的「未找到方法」異常,或者你必須使用一個具有巨大錯誤的EL實現(然而,沒有人會想到)。 – BalusC 2012-08-09 12:53:10