我正在使用JSF和Primefaces来开发JavaEE应用程序。每次按下按钮(Authenticate),都必须显示BUTTON(按钮)和消息(Message)。 问题是显示的是消息,而不是按钮。我该怎么做才能显示按钮?
这是我的代码:
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}" />
答案 0 :(得分:1)
您必须将<h:commandButton />
包装在容器内<h:panelGroup />
,然后刷新容器。
问题是,在第一页加载时,您的按钮不会呈现,因此它不会插入页面的DOM中。在页面刷新时,您尝试刷新它,但由于该按钮不在页面上,您无法执行此操作。
解决方案可能是这个
<h:panelGroup layout="block" id="buttonDiv">
<h:commandButton ... />
</h:panelGroup>
然后在你的ajax中你必须刷新buttonDiv