JSF SelectOneRadio PrimeFaces javax.el.PropertyNotFoundException:目标不可访问

时间:2018-12-12 10:10:03

标签: jsf primefaces

当我将其插入xhtml时,我将得到javax.el.PropertyNotFoundException:无法到达目标,标识符'telefonbuch'解析为空

            <h3>Auswahl</h3>
            <h1:panelGrid columns="2" style="margin-bottom:10px" cellpadding="5">
            <p:outputLabel for="geschaeftsstelle" value="Geschäftsstelle:" />
            <p:selectOneRadio id="geschaeftsstelle" value="#{telefonbuch.geschaeftsstelle}"  layout="grid" columns="3">
            <f:selectItems value="#{telefonbuch.geschaeftsstellen}" var="c" itemLabel="#{geschaeftsstelle}" itemValue="#{geschaeftsstelle}"/>
            </p:selectOneRadio>
            </h1:panelGrid>

我的模型类如下:

@Data
@Entity
public class Telefonbuch {
    @PostConstruct
    public void init() {
        geschaeftsstellen = new ArrayList<String>();
        geschaeftsstellen.add("Dortmund");
        geschaeftsstellen.add("Essen");
        geschaeftsstellen.add("Stralsund");
        geschaeftsstellen.add("Stuttgart");
        geschaeftsstellen.add("Zürich");
        geschaeftsstellen.add("Istanbul");
        geschaeftsstellen.add("Köln");
        geschaeftsstellen.add("Aachen");
        geschaeftsstellen.add("Berlin");
    }

    public String getGeschaeftsstelle() {
        return geschaeftsstelle;
    }

    public void setGeschaeftsstelle(String geschaeftsstelle) {
        this.geschaeftsstelle = geschaeftsstelle;
    }

    public List<String> getGeschaeftsstellen() {
        return geschaeftsstellen;
    }

    public void setGeschaeftsstellen(List<String> geschaeftsstellen) {
        this.geschaeftsstellen = geschaeftsstellen;
    }

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    @Column
    private String vorname;
    @Column
    private String nachname;
    @Column
    private String telefonnummer;
    @Column
    private String handynummer;
    @Column
    private String geschaeftsstelle;

    @Column
    @ElementCollection
    private List<String> geschaeftsstellen; 

    protected Telefonbuch() {
    }

    public Telefonbuch(String vorname, String nachname, String telefonnummer, String handynummer) {
        this.vorname = vorname;
        this.nachname = nachname;
        this.telefonnummer = telefonnummer;
        this.handynummer = handynummer;
    }

我不知道问题是什么。这些按钮将不会显示。只是标题在那里。没有选择。

1 个答案:

答案 0 :(得分:0)

只需清理您的项目,它就可以正常工作。

我不知道这是您的情况,但是每当我遇到类似问题时,清理项目并重新加载服务器都会为我解决。

编辑:

在这种情况下,我将假定@Data和@Entity是有效的标识符(因为我一直在使用@ManagedBean,并在以后将其存储在某些DTO类中。

我也认为这一行:

<f:selectItems value="#{telefonbuch.geschaeftsstellen}" var="c" itemLabel="#{geschaeftsstelle}" itemValue="#{geschaeftsstelle}"/>

应如下所示:

<f:selectItems value="#{telefonbuch.geschaeftsstellen}" var="c" itemLabel="#{c.geschaeftsstelle}" itemValue="#{c.geschaeftsstelle}"/>