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
클라이언트 측에서 어떤 작업을 수행하고 있습니까? –
AS 7.1의 Subversion은 정확히 무엇입니까? 7.1.0? 따라서, Mojarra 2.1.5는? 그리고,'javax.faces.bean' 패키지에서'@ManagedBean @ ViewScoped'를 사용할 때 문제가 사라지나요? – BalusC
Alexandre : 데이터베이스에서 아약스 요청을 통해 검색 문자열을 사용하여 datatable을 primefaces에 채우려고합니다. – Cass