@JFinal 你好,想跟你请教个问题:我用jfinal2.1+jsp写程序,后台语句是:
public void useradmin() {
List<Users> list = Users.dao.find("select a.*,b.role_name,c.org_name from users a left join role b on a.role = b.role_id left join orgs c on a.org_id = c.org_id ");
setAttr("userList", list);
render("/system/useradmin.jsp");
}
前台语句是:
<c:forEach items="${userList}" var="user">
<tr >
<td style="text-align: center;">${user.user_id}
</td>
<td style="text-align: center;">
</td>
<td style="text-align: center;"> </td>
<td style="text-align: center;"></td>
<td style="text-align: center;">
</td>
</tr>
</c:forEach>
users的Model
@SuppressWarnings("serial")
public class Users extends BaseUsers<Users> {
public static final Users dao = new Users();
}
报错:
Caused by: javax.el.PropertyNotFoundException: Property 'user_id' not found on type com.post.common.model.Users
at javax.el.BeanELResolver$BeanProperties.get(BeanELResolver.java:238)
at javax.el.BeanELResolver$BeanProperties.access$400(BeanELResolver.java:191)
at javax.el.BeanELResolver.property(BeanELResolver.java:324)
at javax.el.BeanELResolver.getValue(BeanELResolver.java:81)
at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:54)
at org.apache.el.parser.AstValue.getValue(AstValue.java:123)
at org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:182)
at org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate(PageContextImpl.java:897)
at org.apache.jsp.system.useradmin_jsp._jspx_meth_c_005fforEach_005f0(useradmin_jsp.java:235)
at org.apache.jsp.system.useradmin_jsp._jspService(useradmin_jsp.java:182)
at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:723)
at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
... 27 more
我很奇怪,com.post.common.model.Users对应的表users有user_id这个字段的,为什么提示
Caused by: javax.el.PropertyNotFoundException: Property 'user_id' not found on type com.post.common.model.Users
这是因为model生成了getter方法,而jsp则使用了getter方法去取数据了,而getter方法对应的属性名是驼峰的,所以需要${user.userId}而不是${user.user_id}去取数据。
jfinal2.2提供了一个参数,可以让jsp仍然使用以前的方式读取数,从而无视getter方法的存在,使用一下如下代码即可设置:
ModelRecordElResolver.setResolveBeanAsModel(true); 这种方式的一个好处是,可以读取关联查询中本model不存在的属性,也可以读取使用put方法任意放进去的属性,如user.put("key",123)。非常感谢!这是问题我自己找到原因了,解决方案如下:
1.版本更新为jfinal2.2
2.设置ModelRecordElResolver.setResolveBeanAsModel(true);
3. ${user.user_id}正常显示
Users中没有这个get方法,用record取吧版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。