开发者社区> 问答> 正文

JFinal使用el标签取元素属性报 does not have the pro?报错

@JFinal 你好,想跟你请教个问题:

我在Controller中往session中放了一个User对象,jsp页面el标签取对象属性的时候报错:

User' does not have the property 'nickName'.

是什么问题呢?

P.S

1.Config中已经进行模型映射

arp.addMapping("user", User.class);

2.表中也有nickName这个字段

3.jsp页面表达式${sessionScope.curUserObj.nickName}

4.在页面 ${sessionScope.curUserObj}能输出user对象,并且也有nickName属性:

 bean.User@4a952b12 {id:1, status:null, nickName:Romotc, email:r@ail.com, pswd:4e6327, lastLoginTime:, registerTime:2:56.0}

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

       JspRender对HttpServletRequest对象中的数据进行了处理,数据全被放入了Map之中,如果希望不被处理,可以通过在YourJFinalConfig中调用一下:JspRender.setSupportActiveRecord(false)。

      由于JFinal为了Resful,session中的数据默认是不处理的,所以session中的数据无法通过${blog.title}获取到。这个问题本质上是JSTL数据读取能力太弱造成的,建议使用FreeMarker取代JSP

    多谢 @JFinal关于session的代码没有贴出来 session.setAttribute(" curUserObj ", user);?还有实例化user的代码?user是从数据库中查询出来的Useru=User.findByEmail(getPara(LoginValidator.UIKey_Email));setSessionAttr(SessionConstants.CurUser,u);

    是不是user是你数据库的系统表注意个数据库之间表的细节


    arp.addMapping("\"user\"",User.class);


    这样试试?

    应该还不是的我直接在页面${sessionScope.curUserObj}能输出user对象,并且也有nickName属性bean.User@4a952b12{id:1,status:null,nickName:Romotc,email:r@ail.com,pswd:4e6327,lastLoginTime:,registerTime:2:56.0} 用get方式
    存入的对象是map的格式

    直接取出来是不行的,jfinal的render是进行了封装的

    对象.get('nickName')

    确实是这样,使用.get('nickName')是可以取到值的。但是我看官方的demo_for_jsp里面blog.jsp里面是直接${blog.title}这样取的。希望 @JFinal来了之后给解答一下,是什么原因。

    到底怎么取得呀?

    看了半天都没看见取得的方法。


    2020-06-22 21:15:36
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

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