jfinal使用freemarker,当输出map时,默认输出内容包含“ getClass、 getOrDefault、 computeIfAbsent、 values、 replace、 replaceAll、 remove、 containsValue、 put、 empty、 compute、 hashCode、 putAll、 get、 merge、 class、 keySet、 aa、 cc、 entrySet、 forEach、 containsKey、 isEmpty、 clear、 computeIfPresent、 size、 equals、 clone、 toString、 putIfAbsent、”
遇到问题的jfinal代码如下:
public void index() {
super.setAttr("aa", "bbbbb");
super.setAttr("bool", true);
super.setAttr("riqi", new Date());
super.setAttr("shuzhi",1234567890456.156448);
super.setAttr("shuzu",new String[] {"aa","cc","cc","啊啊"});
Map<String,String> map=new HashMap<>();
map.put("aa","北京");
map.put("bb","上海");
map.put("cc","石家庄");
super.setAttr("hmap",map);
super.render("index.html");
}
这个map使用的freemarker模版前端html如下:
gmindex
${aa} \ ${ccc!'空字符串'}
<br/>
${bool?c}
${bool?string('真的啊','假的')}
<br/>
${riqi?date} 、${riqi?time} 、${riqi?datetime} 、${riqi?string('yyyyMMddHHmmss')}
<br/>
${shuzhi} 、${shuzhi?string['0.##']} 、 ${shuzhi?string.currency} 、 ${shuzhi?string.percent}
<br/>
<#list shuzu as str>
${str?index} ${str}、<br/>
</#list>
<br/>
<#list hmap?keys as key>
${key}、
</#list>
map部分前端输出如下:
修复办法如下:
1、修改index输出。
public void index() {
super.setAttr("aa", "bbbbb");
super.setAttr("bool", true);
super.setAttr("riqi", new Date());
super.setAttr("shuzhi",1234567890456.156448);
super.setAttr("shuzu",new String[] {"aa","cc","cc","啊啊"});
Map<String,String> map=new HashMap<>();
map.put("aa","北京");
map.put("bb","上海");
map.put("cc","石家庄");
super.setAttr("hmap",map);
FreeMarkerRender.getConfiguration().setObjectWrapper(ObjectWrapper.DEFAULT_WRAPPER);//
super.render("index.html");
}
2、直接修改项目extends JFinalConfig的代码,增加如下配置。
@Override
public void afterJFinalStart() {
// TODO Auto-generated method stub
super.afterJFinalStart();
//设置freemarker模版的默认
FreeMarkerRender.getConfiguration().setObjectWrapper(ObjectWrapper.DEFAULT_WRAPPER);
}