有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在素数面中的另一个bean中获取bean值

我想在primefaces中访问从一个bean到另一个bean的值。我定义了范围@SessionScoped

但当访问另一个bean中的值时,我仍然会得到null

FirstBean.java

public void setDistrict(String district) {
    System.out.println("district set District Method "+district);
    this.district = district;
}  
public String getDistrict() {
    System.out.println("district get District Method" +district);
    return district;
}

当试图在SecondBean.java中访问时,它返回null


共 (2) 个答案

  1. # 1 楼答案

    如果你想访问FirstBean.java内的SecondBean.java,你可以这样做:

        ELContext elContext = FacesContext.getCurrentInstance().getELContext();
        FirstBean firstBean = (FirstBean) elContext.getELResolver().getValue(elContext, null, "firstBean");
    
  2. # 2 楼答案

    有很多方法可以做到这一点:

    • 使用@ManagedProperty

    例如:

    第一豆

    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean(name = "firstBean")
    @SessionScoped
    public class FirstBean implements Serializable {
    
    //some Code here
    

    次豆

    import javax.faces.bean.ManagedBean;
    import javax.faces.bean.SessionScoped;
    
    @ManagedBean(name = "secondBean")
    @SessionScoped
    public class FirstBean implements Serializable {
    
    @ManagedProperty(value="#{firstBean}")
    FirstBean firstBeanObject;
    
    • 使用@Inject

    例如:

    第一豆

    javax.inject.Named //for bean declaration
    javax.inject.Inject //for injection
    
    @Named
    @SessionScoped
    public class FirstBean implements Serializable{
    // your code here
    

    次豆

    @Named
    @SessionScoped
    public class SecondBean{
    
    @Inject
    FirstBean firstBean ;
    //code here
    
    • 如果使用SessionScoped,也可以从FacesContext获取当前对象