我有一个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}
。