2013-12-19 4 views
2

Я пытаюсь реализовать ViewScoped CDI bean используя Omnifaces. Метод Bean, который заполняет список с результатами поиска для directfaces datatable, вызывается с использованием ajax с страницы jsf. Если для параметра «Бонус» установлено значение «Сессия», все работает правильно. Когда я пытаюсь установить область действия в Omnifaces ViewScope, контейнер начинает создавать и уничтожать bean-компоненты много раз без каких-либо причин. Вот код боб:Omnifaces viewcoped bean воссоздается снова и снова

... 
import javax.inject.Named; 
import org.omnifaces.cdi.ViewScoped; 

@Named 
@ViewScoped 
public class FindClientBean implements Serializable { 

@Inject 
private ClientDAO clientDAO;  
@NotNull(message="Search string cannot be empty") 
private String searchString; 
private List<Client> resultList;  

@PostConstruct 
public void init() { 
    System.out.println("init"); 
} 

@PreDestroy 
public void end() { 
    System.out.println("end"); 
} 

public void findClient() { 
    System.out.println("method"); 
    resultList = clientDAO.findClientByNameOrLastnamePart(searchString); 
} 

//Getters and setters..  

} 

Пример вывода (есть еще много inits и заканчивается за один вызов метода, я пропустил их):

01:51:50,044 INFO [stdout] (http-localhost-127.0.0.1-9090-5) init 

01:51:50,044 INFO [stdout] (http-localhost-127.0.0.1-9090-4) init 

01:51:50,044 INFO [stdout] (http-localhost-127.0.0.1-9090-5) end 

01:51:50,045 INFO [stdout] (http-localhost-127.0.0.1-9090-4) end 

01:51:50,045 INFO [stdout] (http-localhost-127.0.0.1-9090-5) init 

01:51:50,045 INFO [stdout] (http-localhost-127.0.0.1-9090-4) init 

01:51:50,046 INFO [stdout] (http-localhost-127.0.0.1-9090-5) end 

01:51:50,046 INFO [stdout] (http-localhost-127.0.0.1-9090-4) method 

01:51:50,047 INFO [stdout] (http-localhost-127.0.0.1-9090-5) init 

01:51:50,047 INFO [stdout] (http-localhost-127.0.0.1-9090-5) end 

01:51:50,048 INFO [stdout] (http-localhost-127.0.0.1-9090-5) init 

01:51:50,048 INFO [stdout] (http-localhost-127.0.0.1-9090-5) end 

01:51:50,049 INFO [stdout] (http-localhost-127.0.0.1-9090-5) init 

01:51:50,049 INFO [stdout] (http-localhost-127.0.0.1-9090-5) end 

Что это может быть? Не нашли соответствующего вопроса. Моя конфигурация: JBoss AS 7.1, Omnifaces 1.6.3, Primefaces 4.0

+1

Какое действие вы делаете на стороне клиента? –

+1

Какая AS subversion точно? 7.1.0? Таким образом, с Mojarra 2.1.5? И исчезает ли проблема, когда вы используете '@ManagedBean @ ViewScoped' из пакета' javax.faces.bean'? – BalusC

+0

Alexandre: Я пытаюсь заполнить перформансы datatable, используя строку поиска через запрос ajax из базы данных. – Cass

ответ

1

У меня была та же проблема. Причина это не работало для меня было то, что в моих свойствах проекта -> Проект Грань была Dynamic Web Project версии 3.0

но в web.xml был проект сохранен как 2,5

, так что я просто изменил 2,5 до 3,0 в выглядят так:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0"> 
    <display-name>zjazdi</display-name> 
    <servlet> 
    <servlet-name>Faces Servlet</servlet-name> 
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> 
    <load-on-startup>1</load-on-startup> 
    </servlet> 
    <servlet-mapping> 
    <servlet-name>Faces Servlet</servlet-name> 
    <url-pattern>/faces/*</url-pattern> 
    </servlet-mapping> 
</web-app> 

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

  • Нет связанных вопросов^_^