通过表达式语言访问Java Bean属性

时间:2011-01-04 08:12:03

标签: java jsp

我想在JSP中使用一些Java bean:

class Review{
    int id;
    String text;
    User author;
    // ... getters/setters here ...
}

class User{
    int id;   
    boolean isVisitor;  
    // ... getters/setters here ...   
}

class VisitorUser extends User{
    String name;
    // ... getters/setters here ...
}

我试图在EL中访问一个类型为Review的bean:

${review.author.name}

如您所见,审核中的author类型为User,我尝试在EL中访问的name属性属于其子类VisitorUser。当作者是VisitorUser的实例时,这种方法对于EL是否正确?

这种方法以前工作得很好,但突然间无处可去(或者可能是项目其他一些方面的某些变化的副作用),服务器已经开始出现这个错误:

javax.servlet.jsp.el.ELException: Unable to find a value for "name" in object of class "mypackage.domain.User_$$_javassist_27" using operator "."

非常感谢任何解决此错误的提示/构思/链接。

1 个答案:

答案 0 :(得分:3)

这是对的。它在运行时检查对象。但是您的对象不是VisitorUser类型,而是javassist-enhanced User。所以要确保你有正确的对象。