簡體   English   中英

JSF Primefaces和ajax偵聽器,呈現后未顯示按鈕

[英]JSF Primefaces and ajax listener, button not shown when rendered

我正在使用JSF和Primefaces開發JavaEE應用程序。 每次我按下一個按鈕(驗證)時,必須顯示一個按鈕(一個按鈕)和一個消息(消息)。 問題是顯示了消息,但沒有顯示按鈕。 我該怎么做才能顯示按鈕?

這是我的代碼:

ManagedBean IdCertificateManagedBean.java

String  m_strRoute;
String  m_strMessageRegister;
boolean m_bRegistrationCorrect;


//Getters and Setters 

//Constructor
public IdCertificateManagedBean()
{
        m_strMessageRegister = "";
        m_strRoute = "";
        m_bRegistrationCorrect = false;
}


 public void authenticateUser()
 {      
     try
    {
       int a=5;

        if (a ==5)
        {   

                m_strMessageRegister = "hello";
                m_bRegistrationCorrect = true; 
                m_strRoute = "/admin/menuadmin"; 
         }    
          else 
          { 
                m_strMessageRegister = "ERROR";
          } 
     }  
     catch ( Exception e)
    {
            m_strMessageRegister = "Error";
    }

  }

}

的facelet

<p:commandButton value="Authenticate">
    <p:ajax listener="#{IdCertificateManagedBean.authenticateUser()}" update="Message, Button" />
</p:commandButton>

<h:outputText id="Message" value="#{IdCertificateManagedBean.MessageRegister}" />                   
<p:commandButton id="Button" value="Go" action="#{IdCertificateManagedBean.route}" rendered=" {IdCertificateManagedBean.registrationCorrect}" />

您必須將<h:commandButton />包裝為<h:panelGroup />並包裝在容器中,然后刷新容器。 問題在於,在第一頁加載時,不會呈現您的按鈕,因此不會將其插入頁面的DOM中。 在頁面刷新時,您正在嘗試刷新它,但由於按鈕不在頁面上而無法執行。 一個解決方案可能是這樣

<h:panelGroup layout="block" id="buttonDiv">
    <h:commandButton ... />
</h:panelGroup>

然后在您的ajax中,您必須刷新buttonDiv

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM