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