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

任何建议欢迎

最佳答案

如果您的目标环境支持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?(在外部数据表中时原理没有什么不同)

关于java - 在JSF 2中从同一命令调用不同的 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14506471/

10-16 17:07