我有以下 session 范围的 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}": The class 'com.example.RegisterController' does not have a readable property 'mitgliedAbc'.
这是怎么引起的,我该如何解决?
最佳答案
javax.el.PropertyNotFoundException: The class 'xxx' does not have a readable property 'yyy'
这基本上意味着
xxx
类没有属性 yyy
的(有效)getter 方法。换句话说,应该输出值的以下 EL 表达式,
#{xxx.yyy}
无法在
public Yyy getYyy()
类上找到 xxx
方法。在您的特定情况下,使用以下 EL 表达式,
#{registerController.mitgliedAbc}
它无法找到
public MitgliedAbc getMitgliedAbc()
属性。事实上,这种方法并不存在。它被命名为
getMitgliedABC()
而不是 getMitgliedAbc()
。相应地修复方法名称以完全匹配
getYyy()
并确保它是 public
和非 static
。public MitgliedAbc getMitgliedAbc() {
return mitgliedAbc;
}
也可以看看:
关于jsf - javax.el.PropertyNotFoundException : The class 'xxx' does not have a readable property 'yyy' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27769814/