jfinal2.1+jsp,前台取值报错
@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
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
这2。1还没有用上,都2.2了?
Users中没有这个get方法,用record取吧
这是问题我自己找到原因了,解决方案如下:
1.版本更新为jfinal2.2
2.设置ModelRecordElResolver.setResolveBeanAsModel(true);
3.${user.user_id}正常显示
非常感谢!
这是因为model生成了 getter方法,而 jsp 则使用了 getter 方法去取数据了,而 getter 方法对应的属性名是驼峰的,所以需要 ${user.userId} 而不是 ${user.user_id} 去取数据。
jfinal 2.2 提供了一个参数,可以让 jsp 仍然使用以前的方式读取数,从而无视 getter 方法的存在,使用一下如下代码即可设置:
这种方式的一个好处是,可以读取关联查询中本 model 不存在的属性,也可以读取使用 put 方法任意放进去的属性,如 user.put("key", 123)。