如何通过 ui:param 参数化 h:commandLink 动作属性

How to parameterize h:commandLink action attribute via ui:param

我正在尝试在包含文件中参数化 <h:commandLink>action 属性:

<ui:include src="template-file.xhtml">
     <ui:param name="actionToCall" value="actionSave" />
     <ui:param name="actionLabel" value="actionLabel" />
</ui:include>

其中 template-file.xhtml 包含:

<h:commandLink action="#{actionToCall}" value="#{actionLabel}" />

但我收到以下异常:

javax.el.ELException: /page.xhtml @17,45 action="#{actionToCall}": 
     Identity 'actionToCall' does not reference a MethodExpression instance, 
     returned type: java.lang.String

我希望它调用我放入 actionToCall 变量中的 spring 网络流转换操作。

在变量后面加一个.toString。这给它一个 "method expression" (它正在寻找)并允许它通过并执行所需的调用。标签最终看起来像:

<h:commandLink action="#{actionToCall.toString}" value="#{actionLabel}" />