2013-03-21 5 views
1

Следующий код работает с запроса областью действия Managed Beans и сообщение показывает в p:messages тег:Ошибка FacesContext уже выпущен

FacesContext context = FacesContext.getCurrentInstance(); 

public void addAction() { 
    if(commande.exists()) { 
       context.addMessage("Commande", new FacesMessage(
         FacesMessage.SEVERITY_ERROR,"Error Message : commande exists", null)); 
    } else { 
     commandeService.create(commande); 
    } 
} 

Когда я пытался использовать его в зрения контекстными Управляемый Боб выводит сообщение об ошибке в регистраторе:

Error the FacesContext is already released! 

и страница JSF висит, не показывая сообщение лиц.

ответ

1

Вы должны Никогда не присвоить текущий экземпляр FacesContext или любому из его свойств как свойство управляемого компонента. Текущий экземпляр действителен только в текущем HTTP-запросе, он уничтожается по завершении HTTP-запроса и недействителен в любых последующих HTTP-запросах.

Вы всегда должны получать текущий экземпляр в локальной области метода.

public void addAction() { 
    if (commande.exists()) { 
     FacesContext.getCurrentInstance().addMessage("Commande", new FacesMessage(
      FacesMessage.SEVERITY_ERROR, "Error Message : commande exists", null)); 
    } else { 
     commandeService.create(commande); 
    } 
} 
+0

Спасибо, это работает. с запросом beans свойство контекста было инициализировано для каждого вызова, поэтому ошибка была скрыта, но с просмотром beobe beobe. – faissal

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