开发者社区> 问答> 正文

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



展开
收起
爱吃鱼的程序员 2020-06-10 14:37:57 402 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

      这是因为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取吧
    这2。1还没有用上,都2.2了?
    2020-06-10 14:38:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载