我正在尝试将操作参数传递给我的页面中的局部视图,但出于某种原因,它说我的参数是null
,即使它是在外页中使用的bean。
网页:
<ui:include src="/templates/common/ajaxConfirmPopup.xhtml">
<ui:param name="bean" value="#{paginaBean}" />
<ui:param name="action" value="deleteAll" />
</ui:include>
在部分中调用操作:
actionListener="#{bean[action]}"
但我收到以下异常:
Caused by: javax.el.PropertyNotFoundException: Target Unreachable, identifier 'bean' resolved to null
at org.apache.el.parser.AstValue.getTarget(AstValue.java:98) [jbossweb-7.0.13.Final.jar:]
at org.apache.el.parser.AstValue.invoke(AstValue.java:244) [jbossweb-7.0.13.Final.jar:]
at org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:278) [jbossweb-7.0.13.Final.jar:]
我做错了吗?
注意:当方法有ActionEvent
参数时,一切正常,当方法没有参数时,它无效。
答案 0 :(得分:5)
如果您在EL 2.2语法中声明了actionListener
方法而没有任何参数,则可以解释此问题如下:
actionListener="#{bean.method()}"
确实期望一种无争议的方法。但是,标准 JSF方式如下
actionListener="#{bean.method}"
真的需要一个ActionEvent
参数。您的问题历史确实suggests您一直在使用EL 2.2语法,因此您不知何故认为它是“标准”,而事实并非如此。
参与包含actionListener
方法的actionListener="#{bean[action]}"
方法时,actionListener
方法被解释为
actionListener="#{bean.method}"
因此需要ActionEvent
参数。
您基本上有3个选项可以解决此问题: