[SPRING] Bean 속성은 다른 세션에서 공유됩니다.
SPRINGBean 속성은 다른 세션에서 공유됩니다.
내 응용 프로그램에 JSF Mojarra 2.1.13, PrimeFaces 3.5 및 Spring 3.2.3을 사용하고 있습니다. DI의 경우 Spring 접근 방식을 사용하고 있습니다 (CDI 아님). 콜렉터와 함께 PrimeFaces 데모에 대한 자습서를 따르고 있습니다. http://www.primefaces.org/showcase/ui/collector.jsf
모든 것이 잘 작동하고 목록에 값을 추가하고 가져올 수 있습니다. 문제는 예를 들어. 두 개의 브라우저를 열고 목록에 값을 추가하면 다른 브라우저에서 몇 가지 값을 추가하고 브라우저를 새로 고치면 두 브라우저에 입력 된 모든 값을 볼 수 있습니다. 따라서 한 브라우저에서 두 값을 두 개 입력하면 새로 고친 후 두 브라우저에서 모두 네 개의 값이 표시됩니다. 내 값을 다른 세션에서 공유하지 않기를 바랍니다.
내 bean은 다음과 같이 보입니다 :
@Component
@ManagedBean
public class ClientBean extends BaseBean {
private Client client = new Client();
private List<Client> clients = new LinkedList<>();
public String reInit() {
client = new Client();
return null;
}
public Client getClient() {
return client;
}
public void setClient(Client client) {
this.client = client;
}
public List<Client> getClients() {
return clients;
}
public void setClients(List<Client> clients) {
this.clients = clients;
}
}
나는 전역 변수를 만들고 있음을 알고있다.
private Client client = new Client();
private List<Client> clients = new LinkedList<>();
그러나 이것은 자습서에 나와 있습니다. 그렇다면 이러한 상황을 처리하여 컬렉터 작업을 통해 변수가 다른 세션에서 공유되지 않게하려면 어떻게해야합니까?
편집하다 @RequestScoped 또는 @SessionScoped를 사용하여 콩에 주석을 달았습니다. 작동하지 않았습니다. 같은 문제가 남아 있습니다.
해결법
-
==============================
1.왜 @ManagedBean을 @Component로 시작하도록 구성했는지 확실하지 않습니다. 이 문제는 Spring이 애플리케이션 전반에 걸쳐 @Component의 단일 인스턴스를 처리하기 때문에 발생합니다 (또는 최소한 사용자의 설명에서 보이는 것처럼). 이를 제거하고 관리 Bean에서 @ViewScoped를 사용하여이 작업을 예상대로 수행하십시오. Spring을 사용하여 JSF 관리 Bean을 관리한다면,이 구성을 faces-config.xml에 추가해야한다 (mkyong 튜토리얼).
왜 @ManagedBean을 @Component로 시작하도록 구성했는지 확실하지 않습니다. 이 문제는 Spring이 애플리케이션 전반에 걸쳐 @Component의 단일 인스턴스를 처리하기 때문에 발생합니다 (또는 최소한 사용자의 설명에서 보이는 것처럼). 이를 제거하고 관리 Bean에서 @ViewScoped를 사용하여이 작업을 예상대로 수행하십시오. Spring을 사용하여 JSF 관리 Bean을 관리한다면,이 구성을 faces-config.xml에 추가해야한다 (mkyong 튜토리얼).
<application> <el-resolver> org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver> </application>
하지만 이렇게하면 @ViewScoped 관리 빈의 힘이 손실됩니다. 이 오류를 해결하려면 @ViewScoped를 Spring에 구현해야한다. 이것에 관해 그물에 대한 많은 예제들이 있으며, 가장 인기있는 것은 Cagatay 's
JSF 관리 빈 범위에 대한 추가 정보 : JSF 2의 통신 : 관리되는 빈 범위
from https://stackoverflow.com/questions/17278376/bean-properties-are-shared-across-different-sessions by cc-by-sa and MIT license