I've the below session scoped CDI managed 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;
}
}
And the following input in a JSF form:
<h:inputText value="#{registerController.mitgliedAbc.mgEmail}" />
When deploying to GlassFish 4.1 and opening the page in browser, the following exception is thrown:
javax.el.PropertyNotFoundException: /register.xhtml @27,66
value="#{registerController.mitgliedAbc.mgEmail}": The class
'com.example.RegisterController' does not
have a readable property 'mitgliedAbc'.
How is this caused and how can I solve it?
javax.el.PropertyNotFoundException: The class 'xxx' does not have a readable property 'yyy'
This basically means that the class xxx
does not have a (valid) getter method for property yyy
.
In other words, the following EL expression which should output the value,
#{xxx.yyy}
was unable to find a public Yyy getYyy()
method on class xxx
.
In your particular case, with the following EL expression,
#{registerController.mitgliedAbc}
it was unable to find a public MitgliedAbc getMitgliedAbc()
property.
And indeed, that method doesn't exist. It's named getMitgliedABC()
instead of getMitgliedAbc()
.
Fix the method name accordingly to exactly match getYyy()
.
public MitgliedAbc getMitgliedAbc() {
return mitgliedAbc;
}
I had the same error and I got the solution
This is my Emp Model
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
And my Controller method
@RequestMapping(value="/welcome", method=RequestMethod.POST)
public ModelAndView CtrlMethod(@ModelAttribute("employee1") Emp employee1) {
ModelAndView model = new ModelAndView("hellopage");
return model;
}
In My (hellopage.jsp) JSP Page I mentioned like bellow and it works for me.
${employee1.getEid()}
${employee1.getEname()}
${employee1.getMobile()}
${employee1.getEmail()}