我不知道这是否是一种好的做法,但我想根据用户上下文对来自同一commandButton
的托管 bean 调用不同的操作。原因是我从应用程序中的不同位置访问页面,我希望我的单个命令是我来自的位置的"后退"按钮。我已经基于MyFaces Orchestra Flow的想法实现了自定义机制,并在自定义导航处理程序中重定向,但我想知道是否有办法参数化我的命令按钮的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>
的上下文中得到了回答:如何将选定的行传递给数据表中的命令链接?(在数据表之外时原理没有太大区别)