JSFpage导航失败:找不到支持bean方法

时间:2012-08-08 18:12:49

标签: jsf navigation facelets

我有以下设置:

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

  • test.xhtml with

    <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>
    

我通过简单地将“成功”直接放入动作属性(作品)来检查导航是否正常工作。此外,将testBean.result打印为outputText会正确显示“成功”。

然而,当点击链接时,我收到“服务器内部错误”,我只能重新加载页面。该日志显示带有以下文本的javax.el.MethodNotFoundException:

Method not found: com.company.project.view.TestBean@81de8.result()

我对于神秘的@ 81de8的来源感到困惑。这是问题的原因,只是其他地方有些不匹配的症状或一些完全正常的幕后魔术?任何人都可以弄清楚为什么commandLink内部的调用失败,而在outputText中却没有?或者指出我应该检查和测试的其他事情?

提前致谢, 路易丝

编辑:Java方法名为getResult(不是结果),错误代码指向方法结果(不是字符串)。在撰写问题时,这些都是错误的,这是因为在漫长的一天工作结束时提出问题;)抱歉。

1 个答案:

答案 0 :(得分:3)

您没有运行您认为正在运行的代码。

你说你已宣布

action="#{testBean.result}"

但异常是告诉你实际正在运行的代码有一个

action="#{testBean.string}"

也许这是您之前尝试的一个遗留物,或者您打开了错误的页面?验证,清理,重建和重新部署,这个问题应该消失。


  

我很困惑神秘的@ 81de8来自

它只是类实例的哈希码。另见Object#toString() javadoc。当你做

时,你会看到相同的字符串格式
System.out.println(new TestBean());