jfinal2.1+jsp,前台取值报错

zhoyg 发布于 2016/01/26 09:36
阅读 326
收藏 0

@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



加载中
0
JFinal
JFinal

   这是因为model生成了 getter方法,而 jsp 则使用了 getter 方法去取数据了,而 getter 方法对应的属性名是驼峰的,所以需要 ${user.userId} 而不是 ${user.user_id} 去取数据。

   jfinal 2.2 提供了一个参数,可以让 jsp 仍然使用以前的方式读取数,从而无视 getter 方法的存在,使用一下如下代码即可设置:

ModelRecordElResolver.setResolveBeanAsModel(true);
   这种方式的一个好处是,可以读取关联查询中本 model 不存在的属性,也可以读取使用 put 方法任意放进去的属性,如 user.put("key", 123)。
z
zhoyg
非常感谢!
1
z
zhoyg

这是问题我自己找到原因了,解决方案如下:

1.版本更新为jfinal2.2

2.设置ModelRecordElResolver.setResolveBeanAsModel(true);

3.${user.user_id}正常显示

0
netbuffer
netbuffer
Users中没有这个get方法,用record取吧
0
刘柳
刘柳
这2。1还没有用上,都2.2了?
返回顶部
顶部