0

マネージド Bean JSF 2.0 でのプロパティの使用について問題があります。

  1. display.xhtml

    <p:commandButton value="Show" actionListener="#{ABean.ajaxShow}" update="info" />
    <p:commandButton value="Hide" actionListener="#{ABean.ajaxHide}" update="info" />
       <p:outputPanel id="info">
        <p:fieldset rendered="#{ABean.show}">
           Info
        </p:fieldset>
    </p:outputPanel>
    
  2. ABean.java

    @Named("ABean")

    public class ABean {プライベートブールショー;

    public void ajaxShow() {
        show = true;
    }
    
    public void ajaxHide() {
        show = false;
    }
    
    //getter setter
    

    }

このプロジェクトは、春のセキュリティ 3.1.2 をセットアップし、ユーザー システムを管理します。

2人のユーザーがログインしてこのページを開くと、1人のユーザーが表示ボタンをクリックすると、「情報」が表示されます。したがって、ユーザー 2 がこのページにアクセスすると、情報が表示されます。ユーザー 2 が [非表示] ボタンをクリックすると、情報が非表示になります。ユーザー 1 がアクセスしたこのページを更新します。情報は非表示です。

それは奇妙だ。ユーザー2のページでユーザー2が原因ではなく、ユーザー1がボタンをクリックしたときに、ページユーザー1が情報状態を変更する(表示/非表示)だけが必要です。

2 人のユーザーの 2 つのセッションが 1 つのマネージド Bean インスタンスしか使用しないために発生すると思います。この場合どうすればいいですか?解決するのを手伝ってください、ありがとう!

PS: ABean に @SessionScoped、@ViewScoped、@RequestScoped を追加しようとしましたが、何も変わりません。

4

1 に答える 1

0

この問題の解決策を見つけました。しかし、BalusCのソリューションを使用できない理由がわかりません(正しいと思いますが...)
私は使用します

import org.springframework.context.annotation.Scope;  
@Named
@Scope("request") // or use session,..

したがって、すべてが正常に機能します。springframework.context.annotation パッケージの Scope を使用すると機能する理由をご存知でしたら教えてください。ありがとうございました!

于 2012-12-09T07:41:26.513 に答える