javax.el.PropertyNotFoundException:类“xxx”没有可读属性“yyy”
Posted
技术标签:
【中文标题】javax.el.PropertyNotFoundException:类“xxx”没有可读属性“yyy”【英文标题】:javax.el.PropertyNotFoundException: The class 'xxx' does not have a readable property 'yyy' 【发布时间】:2015-03-02 10:00:59 【问题描述】:我有以下会话范围的 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'。
这是怎么引起的,我该如何解决?
【问题讨论】:
你应该将RegisterController
类的代码添加到问题中。
嗨 BalusC,非常感谢!我知道它一定是错字,但我是瞎子,找不到它。不可能是错字
这能回答你的问题吗? javax.el.PropertyNotFoundException: Property 'foo' not found on type com.example.Bean
【参考方案1】:
javax.el.PropertyNotFoundException:类“xxx”没有可读属性“yyy”
这基本上意味着xxx
类没有属性yyy
的(有效)getter 方法。
换句话说,下面的EL表达式应该输出值,
#xxx.yyy
无法在 xxx
类上找到 public Yyy getYyy()
方法。
在您的特定情况下,使用以下 EL 表达式,
#registerController.mitgliedAbc
找不到public MitgliedAbc getMitgliedAbc()
属性。
确实,这种方法不存在。它被命名为 getMitgliedABC()
而不是 getMitgliedAbc()
。
相应地修复方法名称以完全匹配getYyy()
,并确保它是public
和非static
。
public MitgliedAbc getMitgliedAbc()
return mitgliedAbc;
另见:
javax.el.PropertyNotFoundException: Property 'foo' not found on type com.example.Bean Identifying and solving javax.el.PropertyNotFoundException: Target Unreachable【讨论】:
嗨 BalusC,非常感谢!我知道它一定是一个错字,但我是瞎子,找不到它。谢谢,弗朗茨 这个技巧对我有用“它是公共的和非静态的”。我试图访问静态内部类的成员。 谢谢!我忘了在我的代码中添加 getter setter。【参考方案2】:我遇到了同样的错误,我得到了解决方案
这是我的 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
还有我的控制器方法
@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()
【讨论】:
以上是关于javax.el.PropertyNotFoundException:类“xxx”没有可读属性“yyy”的主要内容,如果未能解决你的问题,请参考以下文章