4

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?

BalusC
  • 992,635
  • 352
  • 3,478
  • 3,452
Franz H
  • 69
  • 1
  • 2
  • 5
  • You should add the code of the class `RegisterController` to the question. – unwichtich Jan 04 '15 at 20:18
  • Hi BalusC,thanks a lot! I knew it that it must be a typo, but I was blind and couldn't find it.couldn't wsa a typo – Franz H Jan 05 '15 at 12:36
  • Does this answer your question? [javax.el.PropertyNotFoundException: Property 'foo' not found on type com.example.Bean](https://stackoverflow.com/questions/8577545/javax-el-propertynotfoundexception-property-foo-not-found-on-type-com-example) – BalusC Apr 30 '20 at 07:59

2 Answers2

11

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;
}

See also:

BalusC
  • 992,635
  • 352
  • 3,478
  • 3,452
  • Hi BalusC,thanks a lot! I knew it that it must be a typo, but I was blind and couldn't find it. Thanks, Franz – Franz H Jan 05 '15 at 12:37
  • 1
    this tip works for me "it's public and non-static". I was trying to access member of static inner class. – Safwan Shaikh Aug 25 '20 at 08:11
0

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()} 
VyTcdc
  • 946
  • 7
  • 26