19580


ボタンを押下すると、BeanAのnextPage()が起動し、BeanB管理ページに遷移します。nextPage()実行時にBeanBの変数に値を設定し、BeanBで使用したいのですが方法はありますでしょうか。

・BeanA(a.xhtmlを管理)

[code]

    @Named
    @ViewScoped
    public class BeanA{
    
        public String nextPage(){
            //ここでBeanBのlist及び@Entityを付与したentityにデータを設定したい。
            return "b.xhtml";
        }
    }
    
[/code]

・BeanB(b.xhtmlを管理)

[code]

    @Named
    @ViewScoped
    public class BeanB{
        private List<CustomClass> list;
        private CustomEntity entity;
        // コンストラクタ（省略）
    　　// アクセサメソッド（省略）
    }
    
[/code]


CC BY-SA 3.0
2015-12-02T13:03:12.363
19564
2015-12-03T02:08:52.190
2015-12-02T14:17:36.937
76
9577
question
java java-ee
画面遷移時に管理Beanにデータを設定する方法


ViewScopedのBeanからViewScopedのBeanを直接呼ぶことはできません。  
ですので、BeanBに直接値を設定するのではなく、RequestScopedを付けたValueObjectを用意して、そちらを参照するようにしてはどうでしょうか。

ValueObject:

[code]

    @Named
    @RequestScoped
    public class ValueObject
    {
        private List<CustomClass> list;
        private CustomEntity entity;
    }
    
[/code]

BeanA:

[code]

    @Named
    @ViewScoped
    public class BeanA
    {    
    
        @Inject
        private ValueObject valueObject;
    
        public String nextPage()
        {
            valueObject.setList(...);   // ValueObjectに設定
            valueObject.setEntity(...); // ValueObjectに設定
            return "b.xhtml";
        }
    }
    
[/code]

BeanB:

[code]

    @Named
    @ViewScoped
    public class BeanB
    {
        @Inject
        private ValueObject valueObject;
    }
    
[/code]

このようにすれば、BeanBが呼ばれた時点で、ValueObjectにはBeanAで設定した値が設定されているので、好きなように参照することができます。


CC BY-SA 3.0
2015-12-03T02:08:52.190
19580
2015-12-03T02:08:52.190
10724
19564
answer