嵌套bean属性,Exception:Target Unreachable,' null'返回null

时间:2014-09-04 10:55:18

标签: jsf el

在OneToOne关系中,我不能坚持Adresse的字段,但我没有得到学校字段的错误,它给出了这个错误:

javax.el.PropertyNotFoundException: /inscription/school-inscription.xhtml @29,91 value="#{createBn.school.adresse.country}": Target Unreachable, 'null' returned null

这是视图:

<h:inputText id="name" value="#{createBn.school.name}" pt:placeholder="ex: Dalton" />

<h:inputText value="#{createBn.school.creationDate}" pt:placeholder="31-12-2000" />

<h:selectOneMenu value="#{createBn.school.adresse.country}" styleClass="form-control">
    <f:selectItems value="#{countriesList.countries}" />
</h:selectOneMenu>.....

所以createBn:

@Named
@SessionScoped
public class CreateBn implements Serializable{
private static final long serialVersionUID = 1L;

private School school;

@EJB
private SchoolPr schoolPr;

public CreateBn(){
    user = new User();
    school = new School();
}

public void createSchool(){
    schoolPr.createSchool(school);
}

以下是学校实体和地址实体:

@Entity
@Table(schema = "school", name = "school")
public class School implements Serializable {
....
private String name;

@OneToOne @JoinColumn(name = "adressId")
private Adresse adresse;
//getters +setters

地址:

@Entity
@Table(schema = "school", name = "adress")
class Adresse implements java.io.Serializable {
..
private String country;
//getters +setters

Ps:我已经在这里看到了类似的情况,但没有任何帮助+我删除了这里发布的大部分代码,如ID字段,因此,所有的getter和setter都已实现。

1 个答案:

答案 0 :(得分:0)

  

value="#{createBn.school.adresse.country}":目标无法访问,'null'返回null

这意味着以下值之一为null

  • #{createBn}
  • #{createBn.school}
  • #{createBn.school.adresse}

createBn乍一看似乎没问题(否则你也会遇到其他问题)。当您使用school明确创建new School()时,adresse看起来没问题。但是,我在任何地方都没有看到school.setAdresse(new Adresse()); 。相应地修复它。

{{1}}