【问题标题】:Primefaces p:messages does not displayPrimefaces p:消息不显示
【发布时间】:2013-12-27 23:26:42
【问题描述】:

您好,我的显示 p:messages 有问题 我有这个页面:

<html xmlns="http://www.w3.org/1999/xhtml"
  xmlns:h="http://java.sun.com/jsf/html"
  xmlns:p="http://primefaces.org/ui">
<h:head>
    <title>Facelet Title</title>
</h:head>
<h:body>
    <h:form prependId="false">  
        <p:messages id="msgs" showDetail="true"/>  
        <p:commandButton value="Info" actionListener="#{messagesController.addInfo}" update="msgs"/>  
        <p:commandButton value="Warn" actionListener="#{messagesController.addWarn}" update="msgs"/>  
        <p:commandButton value="Error" actionListener="#{messagesController.addError}" update="msgs"/>  
        <p:commandButton value="Fatal" actionListener="#{messagesController.addFatal}" update="msgs"/>  
    </h:form> 
</h:body>

这是我管理消息的 bean

@ManagedBean(name = "beanMessageManager")
@SessionScoped
public class BeanMessageManager {    
    public void addInfo(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage("form1:msgs", new FacesMessage(FacesMessage.SEVERITY_INFO,"Sample info message", "PrimeFaces rocks!"));  
    }   
    public void addWarn(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_WARN,"Sample warn message", "Watch out for PrimeFaces!"));  
    }    
    public void addError(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Sample error message", "PrimeFaces makes no mistakes"));  
    }  
    public void addFatal(ActionEvent actionEvent) {  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_FATAL,"Sample fatal message", "Fatal Error in System"));  
    }   
}

当我点击某个按钮时,不会显示消息。

我做错了什么?

非常感谢您的回复

【问题讨论】:

    标签: jsf primefaces messages


    【解决方案1】:

    您在 actionListener 中的 bean 名称似乎有误。

    bean 被命名为 @ManagedBean(name = "beanMessageManager"),但在 xhtml 页面中您尝试调用 actionListener="#{messagesController.addInfo}"

    也许这会起作用:

    <p:commandButton value="Info" actionListener="#{beanMessageManager.addInfo}" update="msgs"/>  
    <p:commandButton value="Warn" actionListener="#{beanMessageManager.addWarn}" update="msgs"/>  
    <p:commandButton value="Error" actionListener="#{beanMessageManager.addError}" update="msgs"/>  
    <p:commandButton value="Fatal" actionListener="#{beanMessageManager.addFatal}" update="msgs"/>
    

    编辑
    此外,您还缺少 xhtml 文件末尾的 &lt;/html&gt; 标记。另外我认为你应该使用msgs 而不是"form1:msgs"。不幸的是,我不能 100% 确定 primefaces 的工作原理,因为我从未使用过它。

    【讨论】:

    • 还有 2 个错误。如果您不确定原因和解决方案,请自行复制“粘贴”并运行代码。
    【解决方案2】:

    问题在于actionListener="#{messagesController.addInfo}" 你正在调用一个可能不存在的messageController。您应该改用 beanMessageManager

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-02-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多