代码之家  ›  专栏  ›  技术社区  ›  Mercious

h:命令按钮,然后在JSF中进行页面导航?

jsf
  •  0
  • Mercious  · 技术社区  · 7 年前

    有没有可能有一个commandButton来执行某个支持bean的方法,然后导航到另一个页面?

    因此,对于来自同一页面的调用,重定向是不必要的,我希望避免这种情况。

    • 为方法的“远程”调用创建一个单独的方法,该方法执行相同的逻辑并重定向到页面

    我没有选择吗?有没有办法告诉commandButton本身它应该导航到某个地方,或者我必须在支持bean中实现这一点?

    2 回复  |  直到 7 年前
        1
  •  1
  •   Community Mohan Dere    6 年前

    你的标题和第一句话是“危险的”,有点不在主题上,因为对这两个词来说,答案都是肯定的,你在第二段中描述了你自己。

    真正的问题是关于条件导航的问题。但是让我首先声明,如果您只是确保不在bean中执行实际工作,那么您对这两个方法的解决方案也没有错( which you should not

    现在条件导航本身并不困难

    我假设您已经了解了所有基本的JSF,这只需要做一些事情

    因此,如果可以,问题仍然存在

    这反过来又可以用于返回null或if/else中的其他新页面。

    <h:commandButton action="#{mybean.action(true))" />
    

    第2页:

    <h:commandButton action="#{mybean.action(false))" />
    

    豆子:

    public String action(boolean navigate) {
    
        doWork();
      
        if (navigate) {
            return "page2.xhtml?faces-redirect=true";
        } else {
            return null;
        }
    

    实现对操作的源页面的检测具有这样的优势:在UI中,您不需要任何关于如何导航的知识,您总是在没有任何参数的情况下调用相同的方法,并且您将使用此操作的每个新页面都会导航到正确的页面,而开发人员不需要任何知识。

    所以你挑吧。

        2
  •  -1
  •   WirJun    7 年前

    我不完全确定我是否正确,但你可以这样做:

    <h:commandButton value="Click" action="otherPage.xhtml?faces-redirect=true">
         <f:actionListener binding="#{bean.method}" />
    </h:commandButton>
    

    记住 actionListener action 从命令按钮。希望能有帮助。

    commandButton

    <h:commandButton value="Click" action="{bean.method}"/>
    
    推荐文章