p:从p:commandButton转发后咆哮不起作用

时间:2018-05-24 15:28:03

标签: primefaces jsf-2.2

我尝试使用简单的<p:commandButton/>操作转发到另一个页面并显示<p:growl/>。但是当我点击我的<p:commandButton/>时,它只是转发到页面而不显示<p:growl/>。我查看了其他项目中的一些示例代码,所有内容都检查出来,除了我在这个特定项目中使用漂亮的面孔,但在删除它进行简单的测试后,它也没有任何作用。

这是我能找到的最接近我的问题:p:growl doesn't work after JSF page forward, but works with page redirect

除了那个问题之外,

除了我的重定向之外我也没有。我发现的大部分内容都是关于不使用重定向。

我的forward.xhtml看起来像这样:

<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:pe="http://primefaces.org/ui/extensions">
 <h:head>
      </h:head>

      <h:form id="form">
        <p:growl id="growl" />
                   <!-- Some other code -->
                    <p:commandButton value="Simple Button" 
                    action="#{forwardPageBean.forward()}" 
                    update=":form:growl" ajax="false" />

         </h:form>
  </html>

我转发到homePage.xhtml

的页面
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:p="http://primefaces.org/ui"
      xmlns:pe="http://primefaces.org/ui/extensions">
 <h:head>
      </h:head>

      <h:form id="form">
                   <!-- Some other code -->
         </h:form>
  </html>

我的managedBean看起来像这样:

@ViewScoped
@ManagedBean
public class ForwardPageBean implements Serializable{

  private static final long serialVersionUID = 1L;

       public String forward(){
        FacesContext context = FacesContext.getCurrentInstance();
        context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Random message", null));
        return "homePage.xhtml";

         }

  }

这是我到目前为止所尝试的内容:

我意识到这是用于当你进行重定向并希望保留消息时,但我认为我应该尝试一下。

            context.getExternalContext().getFlash().setKeepMessages(true);

我尝试更改为actionListener进行简单的测试并且它可以正常工作。但是因为它不是用于导航,所以实际上并没有解决我的问题。

 <p:commandButton value="Simple Button" 
                    actionListener="#{forwardPageBean.forward()}" 
                    update=":form:growl" ajax="false" />

最后,我尝试在<p:commandButton/>中同时使用actionListener和action,即使actionListener方法正确执行并且正向操作发生,它仍然没有显示<p:growl/> < / p>

 <p:commandButton value="Simple Button" action = "homePage.xhtml"
                        actionListener="#{forwardPageBean.forward()}" 
                        update=":form:growl" ajax="false" />



     public void forward(){
         FacesContext context = FacesContext.getCurrentInstance();
         context.getExternalContext().getFlash().setKeepMessages(true);
         context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Random message", null));
         }

0 个答案:

没有答案