2013-12-19 4 views
2

Omnifaces를 사용하여 ViewScoped CDI 빈을 구현하려고합니다. primefaces datatable에 대한 검색 결과로 목록을 채우는 Bean 메소드는 jsf 페이지에서 ajax를 사용하여 호출됩니다. 빈 범위가 세션으로 설정되면 모든 것이 올바르게 작동합니다. Omnifaces ViewScope에 범위를 설정하려고 할 때, 컨테이너는 아무런 이유없이 여러 번 빈을 만들고 파괴하기 시작합니다. 여기에 콩 코드 :Omnifaces viewscoped 빈이 계속해서 다시 만들어집니다.

... 
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 7.1의 Subversion은 정확히 무엇입니까? 7.1.0? 따라서, Mojarra 2.1.5는? 그리고,'javax.faces.bean' 패키지에서'@ManagedBean @ ViewScoped'를 사용할 때 문제가 사라지나요? – BalusC

+0

Alexandre : 데이터베이스에서 아약스 요청을 통해 검색 문자열을 사용하여 datatable을 primefaces에 채우려고합니다. – Cass

답변

1

같은 문제가있었습니다. > 프로젝트 패싯 버전 3.0

의 동적 웹 프로젝트했지만 2.5

그래서 난 그냥 3.0 2.5 변경으로 web.xml 파일에서 프로젝트가 저장된 - 이유 나를했다 것이 내 프로젝트 속성에서 그 작업을 일부러 모양은 다음과 같습니다.

<?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> 
관련 문제