【发布时间】:2011-12-21 16:46:36
【问题描述】:
这基本上是this answer 的扩展。
我正在尝试将参数放入方法/操作调用中(用于列表/数据表中的删除按钮)。
客户:
<ui:include src="...">
<ui:param name="acceptButtonBean" value="#{repoHome}" />
<ui:param name="acceptButtonAction" value="removeIndividualDocument(#{doc.id})" />
</ui:include>
子视图:
<h:commandButton value="Continue"
action="#{acceptButtonBean[acceptButtonAction]}" />
...
</h:commandButton>
但是,JSF 失败并出现以下异常:
...yadda, yadda
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) Caused by: javax.el.MethodNotFoundException: /subviews/remove-doc-clink-popup.xhtml @37,98 action="#{acceptButtonBean[acceptButtonMethod]}": Method not found: com.company.project.beans.RepoHome@34b183e7.removeExternalDocument(89)()
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) at com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:109)
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) at javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:88)
02:46:02,431 ERROR [stderr] (http--127.0.0.1-8080-5) ... 31 more
注意
....RepoHome@34b183e7.removeExternalDocument(89)()
它不能那样工作。 JSF 似乎无论如何都会附加括号。
能否以不同的方式实现,但仍使用上述技术?如果有,怎么做?
如果没有,为什么它不起作用?指定了吗?这是 Mojarra 2.0.x 的错误吗?如果存在其他括号,我认为省略括号没有问题......
请注意,我不是在寻找替代解决方案,例如使用 f:param、f:attribute 或 f:setPropertyActionListener。
提前致谢
【问题讨论】:
-
对了,很好奇错误信息使用
RepoHome#toString()而不是RepoHome#getClass()。