This question already has answers here:
Identifying and solving javax.el.PropertyNotFoundException: Target Unreachable

(16个回答)


5年前关闭。




我在尝试使用对象currentActeurObjetProjet并在使用Primefaces的对话框中显示其属性时遇到问题,但始终显示此错误:

注意:/infoprojet.xhtml @ 493,159 value =“#{acteurObjetProjetBean.currentActeurObjetProjet.objets.nomObjet}”:目标无法访问,“objets”返回null
javax.el.PropertyNotFoundException:/infoprojet.xhtml @ 493,159 value =“#{acteurObjetProjetBean.currentActeurObjetProjet.objets.nomObjet}”“:无法到达目标,“objets”返回null

这是备用bean:
package com.mycompany.projet;
.......

/**
 *
 * @author Omar
 */
@Component("etatsBean")
@Scope("session")
public class ActeurObjetProjetBean implements Serializable{
   .......
    private ActeurObjetProjet currentActeurObjetProjet=new ActeurObjetProjet();
   .......
     ////////////////////////////////////////////////////////// Méthodes & fonctions\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\

      ////////////////////////////////////////////////////////// setters & getters \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
    public void setCurrentActeurObjetProjet(ActeurObjetProjet currentActeurObjetProjet)
    {
        this.currentActeurObjetProjet=currentActeurObjetProjet;
    }
    public ActeurObjetProjet getCurrentActeurObjetProjet()
    {
        return currentActeurObjetProjet;
    }
    .......
}

这是我的页面代码:
<p:dialog header="Editer Objet" widgetVar="editobjetDialog" resizable="true" width="300" height="300" showEffect="clip" hideEffect="clip" modal="true">
                                    <p:outputPanel id="editobjetDetail" style="text-align:center;" layout="block">
                                        <center>
                                            <h:panelGrid  columns="2" cellpadding="5">
                                                 <h:outputLabel  value="Nom Objet        "/>
                                                 <p:inputText value="#{acteurObjetProjetBean.currentActeurObjetProjet.objets.nomObjet}" style="width: 180px"/>
                                                                                                         <h:outputLabel  value="Accès DB2        "/>
                                                 <p:inputText value="#{acteurObjetProjetBean.currentActeurObjetProjet.objets.accesDb2}" style="width: 180px"/>
                                                 <h:outputLabel  value="Etat        "/>
                                                 <p:inputText value="#{acteurObjetProjetBean.currentActeurObjetProjet.objets.etatObjet}" style="width: 180px"/>
                                                 <h:outputLabel  value="Version        "/>
                                                 <p:inputText value="#{acteurObjetProjetBean.currentActeurObjetProjet.objets.versionObjet}" style="width: 180px"/>

                                            </h:panelGrid>
                                        </center>
                                    </p:outputPanel>
                                </p:dialog>

问候

最佳答案

javax.el.PropertyNotFoundException:/infoprojet.xhtml @ 493,159 value =“#{acteurObjetProjetBean.currentActeurObjetProjet.objets.nomObjet}”“:无法到达目标,“objets”返回null

EL试图告诉您它不能设置nomObjet值,因为objetsnull。 EL不会为您自动创建任何嵌套对象属性。它只会自动填充leaf属性。您只需要确保objet类的currentActeurObjetProject属性不是null即可。您可以通过在ActeurObjetProjet类的构造函数中进行准备来实现。

public ActeurObjetProjet() {
    this.objet = new Objet();
}

您也可以改为在ActeurObjetProjetBean的构造函数中执行此操作。
private ActeurObjetProjet currentActeurObjetProject;

public ActeurObjetProjetBean() {
    this.currentActeurObjetProject = new ActeurObjetProjet();
    this.currentActeurObjetProject.setObject(new Object());
}

选择最适合功能/业务需求的任何东西。

10-04 14:53