【问题标题】:JSF el not resolvingJSF el 无法解析
【发布时间】:2012-02-10 05:24:49
【问题描述】:

我在 JSF 页面中有以下行:

<h:commandLink action="#{myBean.test}" value="Wizard Step"></h:commandLink>

我希望当页面被加载时,与 myBean 对应的 Bean 将被实例化(我将能够在 eclipse 调试器中看到这一点)。

JSF 的其余部分工作正常,但是这个 bean 没有解析(没有任何错误)。

如何从 el 无法解析 bean 中获取错误?

【问题讨论】:

  • 向我们展示 MyBean 类的代码
  • 我的意思是 - 不看课程 - 有没有办法让 Mojarra 吐出它在尝试解决 el 问题时遇到的错误。
  • 我现在明白了。一切正常,但是在您单击链接后,您会得到类似 PropertyNotFoundException 的信息,因为这样的 bean 不存在。而且您正试图防止出现未解析的 bean。
  • 没错,但我没有收到 PropertyNotFoundException。我没有得到堆栈跟踪,我想知道什么会抛出它。

标签: jsf-2 el managed-bean mojarra


【解决方案1】:

如果有EL错误,肯定会得到javax.el package的异常:

在您的情况下,托管 bean 不是根据初始请求构建的。这只能意味着在视图的其他地方没有引用托管 bean。 action 属性中的 EL 仅在提交表单时进行评估。所以只有在调用动作时才会构造bean。作为测试,只需将#{myBean} 放在视图中的某个位置。您会看到它是根据初始请求构建的。

您的真正问题是命令按钮动作根本没有被调用,所以它的action属性中的EL根本没有被评估。该问题无法在 EL 端进行调试或确定。没有调用按钮操作有很多可能的原因。你可以在这里找到它们:commandButton/commandLink/ajax action/listener method not invoked or input value not updated。初学者中最常见的原因是按钮位于重复组件内,例如&lt;h:dataTable&gt;,其值未正确保存并在表单提交请求期间返回完全不同的值,或者该组件或其组件之一具有@987654339 @ 属性未正确保留,默认为 false

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-31
    相关资源
    最近更新 更多