关于接口中数据字典的使用

大家好,数据字典在管理后台中可以写自定义函数查询对照,那对于接口中的这类字典如何使用呢?以前使用是有两种方法但感觉都不够优雅。。。波总有好的建议吗@Jfinal 

//第一种在结果集中循环赋值
List<Blog> blogList=Blog.dao.getAll();
for (Blog blog : blogList) {    
    blog.put("typeName",DicUtil.get(blog.getType()))	
}

//第二种在实体属性中直接获取
public Class Blog(){     

    private int type;    
    private String typeName;      
      
    public int getType(){        
         return type;    
    }        
    public String getTypeName(){        
         return DicUtil.get(this.getType())  // 可这 model 的 getter setter 是自动生成的,能修改成这样使用吗?还是说要另外写vo    
    }
}

还有另外的方法吗?


评论区

JFinal

2019-10-14 14:29

怎么方便怎么使用

你代码中的第二种方法,可以定制生成器,自动生成方法内部的东东:
http://www.jfinal.com/share/1021

此外, 生成的 getter 方法应该是处在 base model 中, 而你的代码给出来是在最终的 Model 中,显然是不对的

生成器生成的 base model 中的 getter 、setter 方法不要手动去改,这个在文件头部已经有过如下说明:
/**
* Generated by JFinal, do not modify this file.
*/

也就是强调过这个文件不要修改它,让生成器自动维护它

你可以在最终的 model 中手动创建新的 getter 方法,覆盖掉父类中的 getter 方法

cs3230524

2019-10-14 14:54

@JFinal 非常感谢!我尝试了在最终model 中覆盖父类 getter,但结果还是以前的值,是renderJson 的时候好像没有走 model 的 getter 吗,那我改如何处理呢。

JFinal

2019-10-14 15:15

@cs3230524 jfinal 给定的 JFinalJson 实现是直接对 Model 的 Map attrs 进行 json 转换,所以没有走 getter 方法

这种情况下可以使用 fastjson:
renderJson(FastJson.getJson().toJson(data));

cs3230524

2019-10-14 16:14

@JFinal 因为 model 继承了一个 baseModel,所以用FastJson.getJson().toJson(data)会有问题,除了修改 baseModel改掉 getxxx 和使用 model.put(xx,xx)外还其他方法么

JFinal

2019-10-14 17:11

继承了 baseModel , 使用 FastJson.getJson().toJson(data) 不会有问题

如果有问题,你要先说明是什么问题

有关 json 的互相转换,一定要先了解其底层的机制:
https://www.jfinal.com/doc/12-1

文档中并不涉及具体的转换算法与逻辑,只涉及 jfinal 之下不同的转换实现类是什么

马小酱

2019-10-15 10:12

在页面按需转换#toContent('ditc_user_type',user.type ??)

cs3230524

2019-10-15 10:37

@马小酱 接口,不是页面。

热门反馈

扫码入社