我得到了一个single_selection数据表和一个命令按钮的页面。 commandbutton调用一个bean方法来验证是否进行了选择。如果不是,它应该显示一条警告用户的消息。如果进行了选择,则导航到另一个页面。primefaces消息不显示
问题是当没有选择时没有消息显示。如果选择了,它工作正常。
下面是页面代码:
<h:body>
<h:form id="form">
<p:dataTable id="TablaSociedades" var="soc" value="#{Sesion.tablaSociedades}" emptyMessage="No hay Registros que Mostrar" selection="#{Sesion.sociedadUsuario}">
<f:facet name="header">Sociedades asociadas al Usuario</f:facet>
<p:column selectionMode="single" style="width:18px" />
<p:column>
<f:facet name="header">
<h:outputText value="Sociedad" />
</f:facet>
<h:outputText value="#{soc.nombreSociedad}" />
</p:column>
<f:facet name="footer">
<p:commandButton action="#{Sesion.mostrarMenu()}" value="Continuar" process=":form" />
</f:facet>
</p:dataTable>
<br/>
<div>
<p:messages id="messages2" showDetail="true" autoUpdate="false" closable="true" />
</div>
</h:form>
</h:body>
并为bean方法的代码:
public boolean mostrarMenu()
{
boolean resp = true;
if (sociedadUsuario.getNombreSociedad().equals("")) //no selection
{
FacesContext.getCurrentInstance().addMessage(null, new FacesMessage (FacesMessage.SEVERITY_WARN,"Seleccione una Sociedad", "No puede Continuar"));
resp = false;
}
return resp;
}
不得不提的是,命令按钮必须被点击两次,但我会后一个问题为那个问题。
我做了另一个带有bean验证的页面,其中的消息显示正确,与此页面的唯一区别是其他页面仅包含inputText,commandbutton和消息。
感谢您的时间
13年2月25日代号为faces-config.xml文件。
<navigation-rule>
<from-view-id>/elegirSociedad.xhtml</from-view-id>
<navigation-case>
<from-action>#{Sesion.mostrarMenu()}</from-action>
<from-outcome>true</from-outcome>
<to-view-id>/principal.xhtml</to-view-id>
<redirect />
</navigation-case>
</navigation-rule>
我用来重定向避免“单击两次”的问题,我之前,但无济于事,因为你没有更新,它不会显示
我在我的命令按钮中使用了更新属性。我尝试了消息的自动更新属性true和false,但没有显示消息。导航在faces-config.xml文件中定义(更新后的问题中显示的代码) – user2067146 2013-02-25 15:40:49
最后,我可以检测并修复问题...即时通讯使用同一个bean进行2页操作,并在两个页面中显示不同的消息。当我使用addMessage时,我没有使用组件id属性,所以消息处于全局模式,不知何故,这阻止了消息显示在第二页。所以我添加了组件ID属性,现在显示消息。 – user2067146 2013-03-02 04:28:26