最近因为业务需求,需要用到数据字典,于是自己动手写了个简单的前端实现,在这里记录一下,以备以后查看。
首先说说思路,把数据字典所有数据取出来,拼成json字符串,发送到前台,由前台解析成json对象,并应用到各个页面。
json字符串格式是这样的:
[
{
"groupName": {
"typeCode1": "typeText1",
"typeCode2": "typeText2",
"typeCode3": "typeText3"
},
"groupName": {
"typeCode1": "typeText1",
"typeCode2": "typeText2",
"typeCode3": "typeText3"
}
}
]
java端取数据拼字符串代码:
@Transactional(readOnly = true)
public String getAllTypeGroup() {
//获取数据字典中所有数据
List<TSTypegroup> typeGroups = this.commonDao.loadAll(TSTypegroup.class);
StringBuffer dic = new StringBuffer();
dic.append("{");
for (int j = 0; j < typeGroups.size(); j++) {
TSTypegroup typeGroup = typeGroups.get(j);
if (j==0){
dic.append("\"").append(typeGroup.getTypegroupcode()).append("\": {");
List<TSType> tsTypes = typeGroup.getTSTypes();
for (int i = 0; i < tsTypes.size(); i++) {
TSType tsType = tsTypes.get(i);
if (i==0){
dic.append("\"").append(tsType.getTypecode()).append("\": \"").append(tsType.getTypename()).append("\"");
}else {
dic.append(",\"").append(tsType.getTypecode()).append("\": \"").append(tsType.getTypename()).append("\"");
}
}
dic.append("}");
}else {
dic.append(",\"").append(typeGroup.getTypegroupcode()).append("\": {");
List<TSType> tsTypes = typeGroup.getTSTypes();
for (int i = 0; i < tsTypes.size(); i++) {
TSType tsType = tsTypes.get(i);
if (i==0){
dic.append("\"").append(tsType.getTypecode()).append("\": \"").append(tsType.getTypename()).append("\"");
}else {
dic.append(",\"").append(tsType.getTypecode()).append("\": \"").append(tsType.getTypename()).append("\"");
}
}
dic.append("}");
}
}
dic.append("}");
return dic.toString();
}
json字符串拼接好后,在登陆时将他传递到后台主界面中,主界面接收后台数据并处理成数据字典对象:
var dic = $.parseJSON('${dicList}');
子界面调用父页面数据字典:
//数据字典对象
var dic = parent.dic;
数据字典的使用:
//根据字典code获取到字典数据
var TSType = dic['saleMethod'];
//根据当前需要转换的code获取到文本值
return TSType[value];