我有以下会话范围的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"。
这是如何造成的,我该如何解决?
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: 在 com.example.Bean 类型上找不到属性 'foo'
- 识别和解决 javax.el.PropertyNotFoundException: Target Unreachable
我遇到了同样的错误,我得到了解决方案
这是我的电磁脉冲模型
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()}