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

Fra*_*z H 4 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;
    }

}
Run Code Online (Sandbox Code Playgroud)

并以JSF形式输入以下内容:

<h:inputText value="#{registerController.mitgliedAbc.mgEmail}" />
Run Code Online (Sandbox Code Playgroud)

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

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

这是怎么造成的,我该如何解决?

Bal*_*usC 7

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

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

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

#{xxx.yyy}
Run Code Online (Sandbox Code Playgroud)

无法public Yyy getYyy()在课堂上找到方法xxx.

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

#{registerController.mitgliedAbc}
Run Code Online (Sandbox Code Playgroud)

它找不到public MitgliedAbc getMitgliedAbc()房产.

事实上,这种方法并不存在.它被命名getMitgliedABC()而不是getMitgliedAbc().

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

public MitgliedAbc getMitgliedAbc() {
    return mitgliedAbc;
}
Run Code Online (Sandbox Code Playgroud)