プロパティを持つ@RequestScoped
BeanがありList
ます。
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import org.springframework.stereotype.Controller;
@Controller
@ManagedBean
@RequestScoped
public class MyBean implements Serializable {
private List list;
// getters and setters
}
このプロパティはデータテーブルにリンクされています:
<ice:dataTable value="#{myBean.list}" ..other stuff.. />
リストは問題なく動的に入力され、データテーブルは問題なく表示されます。しかし、別のページに移動して最初のページに戻ると、データテーブルには最初のリクエストのデータが残っています。それは再び空であるべきではありませんか?Bean がリクエストスコープの場合、リクエスト後に破棄する必要があり、最初にデータテーブルを取得して空にする必要があります。
さらに奇妙なのは、あるブラウザー (Firefox など) でページを開いてデータテーブルにリクエストを入力し、別のブラウザー (Chrome など) を開いてデータテーブル ページに移動すると、前のリクエストのデータで満たされることです。別のブラウザから!Bean はアプリケーションのように動作していると思います。
何か案は?
更新 1 : クラスは静的でも変数でもありません。また、Tomcat キャッシュを無効にしましたが、まだ機能していません。
更新 2 : おそらく問題が見つかったと思います。@Controller
私のバッキング Bean には、Springの注釈が付けられています。@Autowired
サービスをバインドするために使用するため、この注釈を使用します。これはシングルトンを作成している可能性があり、リクエストごとに作成および破棄されないのはなぜですか? Spring と JSF2 のアノテーションが混在していることに問題があることは確かだと思います。