アプリケーションに JSF Mojarra 2.1.13、PrimeFaces 3.5、および Spring 3.2.3 を使用しています。DI については、Spring アプローチを使用しています (CDI ではありません)。コレクターを使用した PrimeFaces デモのチュートリアルに従っています: http://www.primefaces.org/showcase/ui/collector.jsf
すべてが正常に機能しており、値をリストに追加したり、取得したりできます。問題は、たとえば、2 つのブラウザーを開いてリストにいくつかの値を追加すると、別のブラウザーで次のようにいくつかの値を追加することです。ブラウザを更新すると、両方のブラウザに入力されたすべての値が表示されます。そのため、1 つのブラウザーに 2 つの値を入力し、別のブラウザーに 2 つの値を入力すると、それらを更新した後、両方のブラウザーに 4 つの値が表示されます。私の価値観が異なるセッション間で共有されないようにしたい.
私の豆は次のようになります。
@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<>();
しかし、これはチュートリアルで示されています。では、これらの変数が異なるセッション間で共有されないように、この状況を処理してコレクターを機能させるにはどうすればよいでしょうか?
編集
Bean に次の注釈を付けようとしました:@RequestScoped
または@SessionScoped
- 機能しませんでした。同じ問題が残ります。