我有一个简单的 Facelet 标签:
<ui:composition>
<ui:insert />
</ui:composition>
用于避免声明多个c:set
标签。
假设我在 facelets taglib 库中注册了 name view
,并像这样使用它:
<my:view bean="#{myController}">
<p:inputText value="#{bean.value}>
<p:ajax event="blur" process="@this" listener="#{bean.handleValueChanged}" />
</p:inputText>
</my:view>
该属性value
由 完美解析p:inputText
,但p:ajax
抛出:
Target Unreachable, identifier 'bean' resolved to null
javax.el.PropertyNotFoundException: Target Unreachable, identifier 'bean' resolved to null
at com.sun.el.parser.AstValue.getTarget(AstValue.java:153)
at com.sun.el.parser.AstValue.invoke(AstValue.java:237)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302)
at org.jboss.weld.util.el.ForwardingMethodExpression.invoke(ForwardingMethodExpression.java:39)
at org.jboss.weld.el.WeldMethodExpression.invoke(WeldMethodExpression.java:50)
at org.primefaces.component.behavior.ajax.AjaxBehaviorListenerImpl.processAjaxBehavior(AjaxBehaviorListenerImpl.java:47)
这是一个错误还是预期的行为?
更新:我刚刚用 f:ajax 尝试了同样的方法,它成功了!
顺便说一句,环境如下:
Glassfish 3.1.2
PF 3.0, 3.2, 3.3
更新2:
这个问题RichFaces
是完全一样的。似乎就像一个 PrimeFaces 错误(我今天将在 PF 错误跟踪器上发布一个问题)。