2020-07-04 23:03
@JFinal 我是看了文档不明白才来问的。配置为me.setJsonFactory(new FastJsonFactory());我试过了,也要在attrs中put自定义属性才可以,跟JFinalJson默认的没有什么区别了。我还发现个问题,配置me.setJsonFactory(new FastJsonFactory())后,我有些树形结构的数据出不来了,我树形结构数据是封装有一个方法自动转换List数据的。代码如下
/**
* 取得EasyUi中Tree控件的子树节点
*
* @param modelList
* 包含所有数据的Model列表
* @param idFieldName
* Model中ID字段名称
* @param parentIdFieldName
* Model中父ID字段名称
* @param textFieldName
* Model中名称字段名称,对应EasyUi的Tree控件中的text字段
* @param parentIdValue
* 父ID字段值
* @param level
* 树层级
* @return EasyUi中Tree控件的子树节点
*/
private static > List toTree(List modelList,
String idFieldName, String parentIdFieldName, String textFieldName,
Object parentIdValue, String iconCls, String cntName, int level) {
List retList = new ArrayList();
// 循环处理所有model
int n = 0;
for (M m : modelList) {
// 取得父ID字段值
Object id = m.get(parentIdFieldName);
// ID和传入的parentIdValue值是否相等
if ((parentIdValue == null && id == null)
|| (parentIdValue != null && parentIdValue.toString()
.equals(id.toString()))) {
// 如果相等,说明当前Model是子项,直接加入列表
retList.add(m);
// 递归地将当前Model的子树求出
List childrenList = toTree(modelList, idFieldName,
parentIdFieldName, textFieldName, m.get(idFieldName),
iconCls, cntName, level + 1);
// 子项列表,存放在children字段,此字段为指定字段
m.put(EASYUI_TREE_CHILDREN_NAME, childrenList);
if (StrKit.notBlank(cntName)) {
int cnt = m.getLong(cntName).intValue();
m.put(EASYUI_TREE_STATE_NAME, cnt > 0 ? "closed" : "open");
} else {
if (childrenList.size() > 0) {
//默认展开第一个节点
m.put(EASYUI_TREE_STATE_NAME, n++ == 0 ? "open"
: "closed");
} else {
m.put(EASYUI_TREE_STATE_NAME, "open");
}
}
if (StrKit.notBlank(iconCls)) {
if (!EASYUI_TREE_ICON.equals(iconCls)) {
m.put(EASYUI_TREE_ICON, m.getStr(iconCls));
}
}
// 如果Model中不存在text字段,则填充text字段,因为text字段是Tree控件指定字段
if (!EASYUI_TREE_TEXT_NAME.equals(textFieldName)) {
m.put(EASYUI_TREE_TEXT_NAME, m.getStr(textFieldName));
}
// 如果Model中不存在id字段,则填充id字段,因为id字段是Tree控件指定字段
if (!EASYUI_TREE_TEXT_ID.equals(idFieldName)) {
m.put(EASYUI_TREE_TEXT_ID, m.get(idFieldName));
}
}
}
return retList;
}
我当前的做法是,不配置me.setJsonFactory(new FastJsonFactory()),重写attr方法,将自定义属性put进去,这样貌似可以解决问题。
@Override
protected Map _getAttrs() {
// TODO Auto-generated method stub
Map attrs = super._getAttrs();
attrs.put("dept", dept);
attrs.put("deptName", getDeptName());
attrs.put("skillJson", getSkillJson());
attrs.put("skillText", getSkillText());
return attrs;
}
但我想,有没有更好的处理方法?
2020-06-29 08:33
@JFinal 请问下getRawData() 能获取前台使用jquery ajax (type=get)的数据吗?我怎么试了几次都获取不到的。
2020-06-23 07:35
@JFinal 我按照这个方法去做了,但ISO系统下还是会跳转到http。我是在登录拦截器中写的render(new MyRender(url)),不知道我这样写有没有问题。niginx中已配置