[英]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.