在类中使用托管bean设置变量,并从另一个托管bean中的此类获取变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在类中使用托管bean设置变量,并从另一个托管bean中的此类获取变量相关的知识,希望对你有一定的参考价值。

我发布了类似的问题。看看here。我解决了在托管bean之间共享值的问题。我的新问题是分享我在一个类中的一个mangedbean中设置的值。并希望在antoher manged bean中获得此值。这是解释我的问题的代码示例。

@ManagedBean
@SessionScoped
public class Example{

   String hello = "hello";
   private TestClass test = new TestClass();
   String myVarBean = hello;

   public next(){
      test.setmyVar(hello);
   }

  public String getMyVarBean(){
     return myVarBean;
  }
}


@ManagedBean
@SessionScoped
public class Example2{
   @ManagedProperty(value = "#{Example}")
 private Example example;
   String testString;
   private TestClass test = new TestClass();

   public after(){
      String testInt = test.getmyVar(); // I get null because it is antoher instance
      String testInt = example.getMyVarBean(); // i get "hello"
   }
   public void setExample(Example example){
       this.example = example;}
}


public class TestClass{
   private String myVar;

   public void setMyVar(String var){
      this.myVar = var;
   }

   public String getMyVar(){
      return myVar;
   }
}

但我想要TestClass中的值。

答案

有了它,您可以在会话映射中放置和获取自定义对象

public final class FacesManager {

    public void putObjectIntoSessionMap(final String key, final Object value) {
        FacesContext.getCurrentInstance().getExternalContext().getSessionMap()
                .put(key, value);
    }

    public Object getObjectFromSessionMap(final String key) {
        return FacesContext.getCurrentInstance().getExternalContext()
                .getSessionMap().get(key);
    }
}

以上是关于在类中使用托管bean设置变量,并从另一个托管bean中的此类获取变量的主要内容,如果未能解决你的问题,请参考以下文章

我可以在一个xhtml页面中使用多个xhtml页面以及如何访问(引用它们)托管bean类中的那些页面吗? [重复]

JSF页面中给出的输入不会将该值设置为托管bean变量[duplicate]

在任何 Servlet 相关类中按名称获取 JSF 托管 bean

如何以编程方式将 Java CDI 托管 bean 注入(静态)方法中的局部变量

CDI 托管 bean 和 JSF 托管 bean 可以相互通信吗?

无法从另一个托管引导程序应用程序卸载 WiX 托管引导程序应用程序