JFinal 前台使用jstl+el获取Map封装的Model对象属性出错

小文大哥哥 发布于 2013/01/29 14:36
阅读 2K+
收藏 1

问题描述:

    在某个action中我使用Map<String,List<Model>>封装一个map对象,然后直接render到某个jsp页面,在1.1.6版本中使用jstl无法获得model的属性,例如${model.name}无法取。the class XX  does not hava the property XX

    周一新版本中貌似作者更新一这个问题:JspRender 添加多级属性转换支持,提升 Jsp 用户开发体验。我更换到新版本后,直接render到某个jsp页面的确可以获得对象的属性了。${model.name}是可以获取了。但是我需要先重定向到另一个action,然后由该action跳转的某个页面再次使用Jstl+el遍历这个map集合后获取${model.name}的时候又会报the class XX  does not hava the property XX这个问题。

    @jfinal 这个问题能帮我看看吗?到底是什么原因。

加载中
0
JFinal
JFinal
重定向会丢失所有请求参数,这是由http协议所决定的,试试 forwardAction 方法
0
小文大哥哥
小文大哥哥

引用来自“JFinal”的答案

重定向会丢失所有请求参数,这是由http协议所决定的,试试 forwardAction 方法

数据我是放在session中的。绝对不是应为数据丢失的问题。

我发现一个问题。就是如果前台接受到数据后发现包含类结构信息+数据信息就无法获取

例如:com.test.logingserver.model.Resource@c689301e {pid:XX,name:XX...}

这样的数据el是无法获得属性的

能获得属性的对象只包含后边数据部分类似json格式的数据

请问前边的类结构信息是怎么加上的。@jfinal

0
戴威
戴威

其实model是个map,顶层的时候jfinal会自动处理一遍,使得${model.name}可以使用。

但是你经过多次封装之后,jfinal就不会自动处理了,需要用map的读取方式,${model.get("name")}

0
小文大哥哥
小文大哥哥

引用来自“喵了个咪”的答案

其实model是个map,顶层的时候jfinal会自动处理一遍,使得${model.name}可以使用。

但是你经过多次封装之后,jfinal就不会自动处理了,需要用map的读取方式,${model.get("name")}

谢谢你的回答 我知道jfina的model封装的是map所以使用${model['name']}没有获取到。

没想到竟然要用get()。感谢

走位风骚闪着腰
走位风骚闪着腰
我用${model['name']}怎么报错呢
0
JFinal
JFinal

引用来自“小文大哥哥”的答案

引用来自“喵了个咪”的答案

其实model是个map,顶层的时候jfinal会自动处理一遍,使得${model.name}可以使用。

但是你经过多次封装之后,jfinal就不会自动处理了,需要用map的读取方式,${model.get("name")}

谢谢你的回答 我知道jfina的model封装的是map所以使用${model['name']}没有获取到。

没想到竟然要用get()。感谢

不知道具体代码是什么样子,按理来说,就算再次封装model也会被处理,JspRender 最大处理了 8 层嵌套,所以得看你具体代码
JFinal
JFinal
回复 @喵了个咪 : debug跟踪一下 JspRender,按理说应该是处理了,有结果记得给我回复
戴威
戴威
我给model用put方法放入封装着另一个model的list,就没有被处理。
返回顶部
顶部