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?
This basically means that the class
xxx
does not have a (valid) getter method for propertyyyy
.In other words, the following EL expression which should output the value,
was unable to find a
public Yyy getYyy()
method on classxxx
.In your particular case, with the following EL expression,
it was unable to find a
public MitgliedAbc getMitgliedAbc()
property.And indeed, that method doesn't exist. It's named
getMitgliedABC()
instead ofgetMitgliedAbc()
.Fix the method name accordingly to exactly match
getYyy()
and make absolutely sure it'spublic
and non-static
.See also: