Primefaces 未显示消息

Primefaces 未显示消息,primefaces,messages,Primefaces,Messages,我得到了一个页面,其中有一个选择数据表和一个命令按钮。commandbutton调用一个bean方法来验证是否进行了选择。如果没有,它应该显示一条警告用户的消息。如果进行了选择,它将导航到另一个页面 问题是没有选择时不会显示任何消息。如果进行了选择,则效果良好 以下是该页面的代码: 乌萨里奥协会 以及bean方法的代码: public boolean mostrarMenu() { 布尔值resp=true; if(sociedadUsuario.getNombreSociedad().e

我得到了一个页面,其中有一个选择数据表和一个命令按钮。commandbutton调用一个bean方法来验证是否进行了选择。如果没有,它应该显示一条警告用户的消息。如果进行了选择,它将导航到另一个页面

问题是没有选择时不会显示任何消息。如果进行了选择,则效果良好

以下是该页面的代码:


乌萨里奥协会

以及bean方法的代码:

public boolean mostrarMenu()
{
布尔值resp=true;
if(sociedadUsuario.getNombreSociedad().equals(“”)//无选择
{
FacesContext.getCurrentInstance().addMessage(空,新的FacesMessage(FacesMessage.SEVERITY_WARN,“Seleccione una Sociedad”,“No puede Continuar”);
resp=假;
}
返回响应;
}
我必须提到commandbutton必须被点击两次,但我将针对这个问题发布另一个问题

我用bean验证做了另一个页面,其中消息显示正确,与此页面的唯一区别是另一个页面只包含inputText、commandbutton和消息

谢谢你的时间

02/25/13 faces-config.xml文件的代码


/elegirSociedad.xhtml
#{Sesion.mostrarMenu()}
真的
/principal.xhtml

我使用重定向来避免我之前评论过的“单击两次”问题,但没有用

消息不会显示,因为您没有更新它。将
update
属性添加到您的
p:commandButton

<p:commandButton action="#{Sesion.mostrarMenu()}" value="Continuar" process=":form" update=":form:messages2"/>


此外,我看不出您是如何在这里导航的?

底线是,如果您对两个或多个页面使用相同的托管bean,请使用
for
属性标识消息,并在bean方法中创建消息时使用相同的id。例如:

<p:messages for="MessageId" showDetail="true" autoUpdate="true" closable="true">

因此,托管Bean中的每条消息在页面中都有相应的组件。

我在commandbutton中使用了update属性。我尝试使用messages true和false的auto-update属性,但没有显示任何消息。导航是在faces-config.xml文件中定义的(更新的问题中显示的代码),最后我可以检测并修复这个问题…我使用相同的bean进行了2页,两页中显示了不同的消息。当我使用addMessage时,我没有使用component id属性,因此消息处于全局模式,不知何故,这会阻止消息显示在第二页中。因此,我添加了component id属性,消息现在就显示出来了。
FacesContext.getCurrentInstance().addMessage("MessageId", new FacesMessage  (FacesMessage.SEVERITY_WARN,"Be Warned!", "You did something wrong!"));