나는 named 세션에 매개 변수로 주입하고 설정 한 사용자 세션 속성에 따라 동적으로 dataSet을로드하려고합니다.세션 속성에 따라 데이터를 동적으로로드
namedQuery는 정상적으로 작동하지만 원하는대로 데이터 세트를 가져 오지 못합니다.
세션 속성이 9882 일 때로드 된 데이터 세트는 findAll 쿼리에 해당합니다. 그러나 그 동안에 다른 사용자가 앱에 로그인하고 세션 속성이 4207 인 경우에도 데이터 세트는 여전히 9882와 동일하게 유지되며 이는 데이터 세트가 여전히 findAll 쿼리와 일치 함을 의미합니다. 첫 번째 세션 속성이 4207 인 경우 예상대로 findByPrefDep 쿼리를 사용하지만 해당 4207 사용자 이후에 기록 된 9882 세션 속성에 대해 데이터 세트는 여전히 동일합니다.
@Inject
private String SessionPrefDep;
public Collection<T> getItems() {
if (items == null) {
if (Integer.valueOf(SessionPrefDep) == 4207) {
items = this.ejbFacade.findByPrefDep();
} else if (Integer.valueOf(SessionPrefDep) == 9882) {
items = this.ejbFacade.findAll();
}
}
return items;
}
원하는 컨트롤을 어떻게 얻을 수 있습니까?
미리 감사드립니다.
----------- 새로운 섹션
생산자 :
@ApplicationScoped
public class BeanCDI {
private final String sessionPrefDep = (String) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("xPrefDep");
@Produces
public String SessionPrefDep() {
return sessionPrefDep;
}
}
감사관 :
@Inject
private Instance<String> SessionPrefDep;
public Collection<T> getItems() {
int sessionId = Integer.valueOf(SessionPrefDep.get());
if ((items == null) && (sessionId == 4207)) {
items = this.ejbFacade.findByPrefDep();
System.out.print("****************** findByPrefDep() - sessionId:" + sessionId);
} else if ((items == null) && (sessionId == 9882)) {
items = this.ejbFacade.findAll();
System.out.print("****************** findAll() - sessionId:" + sessionId);
}
return items;
}
안녕 Petr Mensik! 도와 주셔서 정말 고맙습니다. 지식을 공유해 주셔서 대단히 감사합니다! – jMarcel
당신은 오신 것을 환영합니다! 도움이 되었습니까? –
Petr Mensik, 테스트를 마쳤지 만, 불행히도 작동하지 않았습니다. 세션 ID는 앱에 로그인 한 첫 번째 사용자에 따라 계속 동일합니다. 글래스 피쉬의 추억 속에 아직도 남아 있습니다. 필자가 말했듯이 프로듀서와 삽입 된 매개 변수를 보여주기 위해 코드를 업데이트했습니다. 제발, 제가 실수를하는지보십시오. 감사! – jMarcel