2018-01-19 08:41
@JFinal 发现问题所在了,
constants.setJsonFactory(FastJsonFactory.me());
Page page = userService.findPage(user, pageNumber, pageSize);
page.getList().stream().parallel().forEach(o -> o.keep("userId", "userCode", "userName", "userLogo", "type", "year", "area", "clickNum"));
Ret ret = Ret.create().set("result", 0).set("message", "成功").set("body", page);
renderJson(JSON.toJSONString(ret, features));
Page对象中使用的User类型,虽然在keep操作中移除了部分属性,但在JSON.toJSONString(ret, features)操作中,fastjson会引用原来的User中的属性,这样,最终的json中还是包含了所有User中的属性,从而keep操作就失效了。
2018-01-18 18:06
@JFinal 按你这解决方法可以解决属性过滤的问题,但有一个新问题,某个属性值为空时,renderjson把这个属性也过滤掉了。。。能否string类型为空时转为“”,integer为空时转为0,list为空时转化为null,等等,这样处理呢?
2018-01-18 09:31
@JFinal 有两个问题:
1、前后端分离时,admin工程里只负责调用service接口,不涉及到数据库,此时user.keep(...)方法报错,因为里面用到了Config。
2、user继承Model,向前端渲染json时,把Model里的attrNames、attrValues、attrsEntrySet也当作user属性渲染出来了。