2015-05-07 2 views
0

Я ниже командная кнопка и рычать компонент:р: рычание не показывает глобальное Faces сообщения

<p:commandButton id="reservationAdd" actionListener=" {reservationBean.addReservation()}" value="Dodaj" oncomplete="PF('wdlgAddReservation').hide();" update=":frm" action="#{linkedTimelinesController.createTimeline()}"> 
    <f:ajax execute="reservationAdd" onevent="click" listener="#{messageControler.eventAdded()}" render="dynamic"/> 
</p:commandButton> 

<p:growl id="msj" autoUpdate="true"/> 

Я добавление лица сообщения, как показано ниже:

@ManagedBean 
public class MessageControler { 

    public void eventAdded(){ 
     FacesContext.getCurrentInstance().addMessage(null,new FacesMessage(FacesMessage.SEVERITY_INFO,"Rezerwacja została dodana",null)); 
    } 
} 

Однако, это не отображается в компоненте рычания. Как это вызвано и как я могу его решить?

+1

Есть много запросов AJAX там - 'действия ',' actionListener' и 'ajax' на' click'. Я подозреваю, что сообщение очищается одним из этих запросов. –

+1

Я вижу, что ваш 'actionListener' также отсутствует' # '? –

ответ

1

Мой следующий минимальный пример работы, возможно, вы проверить атрибуты вашего commandButton

page.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://xmlns.jcp.org/jsf/html" 
     xmlns:f="http://xmlns.jcp.org/jsf/core" 
     xmlns:p="http://primefaces.org/ui"> 
    <f:view> 
     <h:head/> 
     <h:body> 
      <h:form> 
       <p:commandButton value="Growl"> 
        <f:ajax listener="#{page.triggerEvent}"/> 
       </p:commandButton> 

       <p:growl autoUpdate="true"/> 
      </h:form> 
     </h:body> 
    </f:view> 
</html> 

Page

import javax.faces.application.FacesMessage; 
import javax.faces.bean.ManagedBean; 
import javax.faces.context.FacesContext; 

@ManagedBean 
public class Page { 

    public void triggerEvent() { 
     FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO, "Test!", null)); 
    } 
} 
+0

Я изменил код для тестов на: После подробных тестов , Я заметил, что сообщение появляется, но после двойного щелчка мыши. Как изменить его на один клик, на JAVA SWING нажата мышь. Но я не знаю, как изменить его в jsf. –

+0

Вы можете перенести триггер события в 'действие'' p: commandButton' вместо явного события 'f: ajax', поскольку' p: commandButton' использует AJAX неявно. – Smutje

+0

Да, но я использую: actionListener = "# {reservationBean.addReservation()}" и action = "# {linkedTimelinesController.createTimeline()}", и мне нужны эти действия. –