我有一个JSF页面。我的CommandButton Action 方法值取决于bean变量值。
例子:
Bean headerBean具有可变的actionValue,其值为“someBean.doAction1()”

当我使用时,它说headerBean.actionValue不是正确的方法。

如何获得作为“someBean.doAction1”而不是headerBean.actionValue的操作值。

谢谢,

最佳答案

您可以为此使用大括号符号。

<h:commandButton value="submit" action="#{someBean[headerBean.actionValue]}" />

#{headerBean.actionValue}返回一个字符串,例如doAction1时,这将有效地调用#{someBean.doAction1}

如果要调用的bean名称当前实际上在actionvalue中(headerBean.actionValue返回someBean.doAction1),则需要将其拆分为一个返回bean名称的字段和一个返回方法名称的字段,然后使用
<h:commandButton value="submit" action="#{requestScope[headerBean.beanName][headerBean.actionValue]}" />

如果headerBean.beanName返回'someBean'并且headerBean.actionValue返回doAction1,则上面的代码将调用#{somebean.doAction1}

09-26 17:02