2013-12-10 5 views
2

Привет У меня есть проблема с дисплеем р: сообщения У меня есть эта страница:Primefaces р: сообщения не отображает

<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> 

и это мой боб, чтобы управлять сообщениями

@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")); 
    } 
} 

Когда я нажимаю на какую-то кнопку, сообщение не отображается.

Что я плохо делаю?

Большое спасибо за ответ

ответ

1

Похоже, у вас есть неправильное название фасоли в actionListener.

Боб имеет имя @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"/> 

EDIT
Кроме того, вам не хватает </html> тег в конце вас XHTML файла. Также я думаю, вы должны использовать msgs вместо "form1:msgs". К сожалению, я не уверен на 100%, как работает интерфейс, так как я никогда не использовал его.

+0

Есть еще 2 ошибки. Пожалуйста, скопируйте'paste'n'run код самостоятельно, если вы не уверены в причине и решении. – BalusC

+0

Хорошо, я никогда не тестировал свое предложение. – Qben

0

Проблема в том, что здесь actionListener="#{messagesController.addInfo}" вы вызываете сообщение messageController, которое может не существовать. Вместо этого вы должны использовать beanMessageManager.

Смежные вопросы