javax.el.PropertyNotFoundException:该类' xxx'没有可读的财产' yyy'

时间:2015-01-04 20:08:36

标签: jsf el managed-bean

我有以下会话范围的CDI托管bean:

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

    @Inject
    private MitgliedAbc mitgliedAbc;

    public MitgliedAbc getMitgliedABC() {
        return mitgliedAbc;
    }

    public void setMitgliedAbc (MitgliedAbc mitgliedAbc) {
        this.mitgliedAbc = mitgliedAbc;
    }

}

以JSF形式输入以下内容:

<h:inputText value="#{registerController.mitgliedAbc.mgEmail}" />

部署到GlassFish 4.1并在浏览器中打开页面时,会抛出以下异常:

  

javax.el.PropertyNotFoundException:/register.xhtml @ 27,66   value =“#{registerController.mitgliedAbc.mgEmail}”:该类   'com.example.RegisterController'没有   具有可读属性'mitgliedAbc'。

这是如何引起的?如何解决?

2 个答案:

答案 0 :(得分:7)

  

javax.el.PropertyNotFoundException:类'xxx'没有可读属性'yyy'

这基本上意味着类xxx没有属性yyy的(有效)getter方法。

换句话说,下面的EL表达式应输出值

#{xxx.yyy}

无法在课程public Yyy getYyy()上找到xxx方法。

在您的特定情况下,使用以下EL表达式

#{registerController.mitgliedAbc}

无法找到public MitgliedAbc getMitgliedAbc()属性。

事实上,这种方法并不存在。它的名称为getMitgliedABC(),而不是getMitgliedAbc()

相应地修改方法名称以完全匹配getYyy()

public MitgliedAbc getMitgliedAbc() {
    return mitgliedAbc;
}

答案 1 :(得分:0)

我遇到了同样的错误,我找到了解决方法

这是我的Emp模型

public class Emp {
    private String Eid;
    private String Ename;
    private String Mobile;
    private String Email;

    public String getEid() {
        return Eid;
    }

    public void setEid(String Eid) {
        this.Eid = Eid;
    }

    public String getEname() {
        return Ename;
    }

    public void setEname(String Ename) {
        this.Ename = Ename;
    }

.........etc

还有我的Controller方法

 @RequestMapping(value="/welcome", method=RequestMethod.POST)
    public ModelAndView CtrlMethod(@ModelAttribute("employee1") Emp employee1) {
         ModelAndView model = new ModelAndView("hellopage");
         return model;    
    }

在我的(hellopage.jsp)JSP页面中,我像下面提到的那样对它有效,

 ${employee1.getEid()}
 ${employee1.getEname()}
 ${employee1.getMobile()}
 ${employee1.getEmail()}