javax.el.PropertyNotFoundException:类“xxx”没有可读属性“yyy”

问题描述 投票:0回答:3

我有以下会话范围的 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”。

这是怎么造成的,如何解决?

jsf el managed-bean propertynotfoundexception
3个回答
13
投票

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
且非
static

public MitgliedAbc getMitgliedAbc() {
    return mitgliedAbc;
}

另请参阅:


0
投票

我有同样的错误,我得到了解决方案

这是我的雇员模型

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

还有我的控制器方法

 @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()} 

0
投票

我收到此错误是因为我试图访问嵌套枚举的字段。这不起作用,因为嵌套枚举是静态的。我的解决方案是向视图 bean 添加另一种方法来访问枚举字段。

© www.soinside.com 2019 - 2024. All rights reserved.