我在 JSF 页面中有以下行:
<h:commandLink action="#{myBean.test}" value="Wizard Step"></h:commandLink>
我希望在加载页面时,与 myBean 对应的 Bean 将被实例化(并且我将能够在 eclipse 调试器中看到这一点)。
JSF 的其余部分工作正常,但是这个 bean 没有解析(没有任何错误)。
如何从 el 无法解析 bean 中获取错误?
我在 JSF 页面中有以下行:
<h:commandLink action="#{myBean.test}" value="Wizard Step"></h:commandLink>
我希望在加载页面时,与 myBean 对应的 Bean 将被实例化(并且我将能够在 eclipse 调试器中看到这一点)。
JSF 的其余部分工作正常,但是这个 bean 没有解析(没有任何错误)。
如何从 el 无法解析 bean 中获取错误?
如果有 EL 错误,你肯定会得到javax.el
package的异常:
ELException
: 表示表达式求值过程中可能出现的任何异常情况。MethodNotFoundException
: 在评估 a 时找不到方法时抛出MethodExpression
。PropertyNotFoundException
ValueExpression
: 在评估 a或时找不到属性时抛出MethodExpression
。PropertyNotWritableException
: 当在 a 上设置值时无法写入属性时抛出ValueExpression
。在您的情况下,托管 bean 不是根据初始请求构建的。这只能意味着在视图的其他地方没有引用托管 bean。EL inaction
属性仅在提交表单时进行评估。所以只有在调用动作时才会构造bean。作为测试,只需将#{myBean}
其放在视图中的某个位置。您会看到它是根据初始请求构建的。
您真正的问题是根本没有调用命令按钮操作,因此根本不评估其操作属性中的 EL。该问题无法在 EL 端进行调试或确定。没有调用按钮操作有很多可能的原因。你可以在这里找到它们:commandButton/commandLink/ajax action/listener method not invoked 或 input value not updated。初学者中最常见的原因是按钮位于重复组件内,例如<h:dataTable>
其值未正确保存并在表单提交请求期间返回完全不同的值,或者该组件或其组件之一具有rendered
不正确的属性保留并默认为false
.