JSF 页面中的动态操作
Posted
技术标签:
【中文标题】JSF 页面中的动态操作【英文标题】:Dynamic Action in JSF page 【发布时间】:2011-09-07 08:58:54 【问题描述】:我有一个 JSF 页面。我的 CommandButton 操作方法值取决于 bean 变量值。 例子: Bean headerBean 具有值为“someBean.doAction1()”的变量 actionValue
当我使用时,它说 headerBean.actionValue 不是正确的方法。
如何将操作值作为“someBean.doAction1”而不是 headerBean.actionValue。
谢谢,
【问题讨论】:
你能发布一些你现在拥有的样本吗? 【参考方案1】:您可以使用大括号表示法。
<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
。
【讨论】:
您好,感谢您的回复。我的 headerBean.actionValue 返回 someBean.doAction1。我认为使用您的解决方案使其成为 [code]#someBean.someBean.doAction1[code]。 headerBean.actionValue 的值也返回 bean 名称。 这很有趣——我没有意识到语法有效。谢谢你的信息。 哇。有趣的语法。我通常用反射做类似的事情,比如在运行时生成方法名并使用反射来调用它。很高兴知道我也可以在 JSF 中做到这一点。 +1 @mahesh:您应该在期间拆分它,然后使用类似(假设 bean 是请求范围)#requestScope[headerBean.beanName][headerBean.beanAction]
之类的东西。 @Harry:我想你可能会发现这个例子很有用:***.com/questions/5713718/…以上是关于JSF 页面中的动态操作的主要内容,如果未能解决你的问题,请参考以下文章
JSF 如何从支持 bean 重定向到支持 bean 中动态构建的 URL?