在JSF 2中调用来自同一命令的不同操作

时间:2013-01-24 16:48:00

标签: java jsf jsf-2

我不知道这是不是一个好习惯,但我想根据用户上下文对来自同一commandButton的托管bean调用不同的操作。原因是我从应用程序中的不同位置访问一个页面,我希望我的单个命令是我来自的位置的一种“后退”按钮。 我已经实现了一个基于MyFaces Orchestra Flow概念的自定义机制,并在自定义NavigationHandler中进行了重定向,但我想知道是否有办法参数化我的commandButton的action属性。

欢迎任何建议

1 个答案:

答案 0 :(得分:1)

如果您的目标环境支持Servlet 3.0 / EL 2.2(Tomcat 7,Glassfish 3等),或者安装了JBoss EL,那么您只需将deisred参数直接传递给方法即可。所以你可以拥有

public void submit(String argument) {
    // ...
}

<h:commandButton value="submit" action="#{bean.submit('some')}" />

或者,基于EL范围的变量:

<h:commandButton value="submit" action="#{bean.submit(some)}" />

还有其他方法。想想<f:param><f:setPropertyActionListener>Application#evaluateExpressionGet()等等。其中许多问题都是在<h:dataTable>此处的背景下回答的:How can I pass selected row to commandLink inside dataTable?(原则并没有那么不同外部数据表)