Jsf 2 将actionListener方法名称作为参数传递到包含视图
我试图将操作参数传递给页面中的部分视图,但出于某种原因,它表示我的参数为Jsf 2 将actionListener方法名称作为参数传递到包含视图,jsf-2,facelets,Jsf 2,Facelets,我试图将操作参数传递给页面中的部分视图,但出于某种原因,它表示我的参数为null,即使外部页面中使用的是bean 页面: <ui:include src="/templates/common/ajaxConfirmPopup.xhtml"> <ui:param name="bean" value="#{paginaBean}" /> <ui:param name="action" value="deleteAll" /> </ui:inc
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:]
但我得到以下例外:
<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
参数时,一切正常,当方法没有参数时,一切正常。如果您一直在EL 2.2语法中声明actionListener
方法,并且没有任何参数,则此问题是可以解释的,如下所示:
actionListener="#{bean.method()}"
这确实需要一种无争论的方法。然而,标准的JSF方式如下
actionListener="#{bean.method}"
它实际上需要一个ActionEvent
参数。您的问题历史确实表明,您一直在使用EL2.2语法,因此您以某种方式假设它是“标准”,而事实并非如此
当参数化包含模板的actionListener
方法时,就像使用actionListener=“#{bean[action]}”
的方法一样,actionListener
方法被解释为
actionListener="#{bean.method}"
因此需要一个ActionEvent
参数
您基本上有3个选项来解决此问题:
ActionEvent
参数,无借口
actionListener
替换为action
。保持方法无效
没有问题。如果EclipseEL验证出现问题,只需在首选项中进行验证即可
actionListener=“#{bean[action]()}”
。然而,在早期的Tomcat和Glassfish版本中,这一点很明显
deleteAll
方法有ActionEvent
参数,你能检查它是否起作用吗?我想我以前有过这种情况,这就解决了问题。这样,当bean通过ui:param
传递时,no-arg方法不起作用!但我有其他方法作为ActionListener,它们在没有任何参数的情况下工作。i、 e:如果我不使用包含的视图,同样的方法也适用于actionListener(没有参数)。