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()
and make absolutely sure it's public
and non-static
.
public MitgliedAbc getMitgliedAbc() {
return mitgliedAbc;
}