我有以下会话范围的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'。
这是如何引起的?如何解决?
答案 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()}