freemaker错误 jfinal3.2

${title}
<#list names as x >
${x}
</#list>
xxx

我的ftl模板如上

	public void index(){
		setAttr("title", "这是一个测试");
//		renderFreeMarker("/index/index.ftl");
//		renderText("这是一个测试");
		setAttr("names",  new String[]{"1","2","3","4"});
		render("index.html");
	}

action如上

使用run as JavaApplication没有问题,但在tomcat中运行就提示,请问这是什么情况?

严重: /
com.jfinal.render.RenderException: freemarker.core.ParseException: Parsing error in template "index/index.html" in line 2, column 20:
Encountered "data", but was expecting:
    ">"
	at com.jfinal.render.FreeMarkerRender.render(FreeMarkerRender.java:161)
	at com.jfinal.core.ActionHandler.handle(ActionHandler.java:99)
	at com.jfinal.core.JFinalFilter.doFilter(JFinalFilter.java:73)
	/**
	 * 配置常量
	 */
	public void configConstant(Constants me) {
		// 加载少量必要配置,随后可用PropKit.get(...)获取值
//		PropKit.use("a_little_config.txt");
//		me.setDevMode(PropKit.getBoolean("devMode", false));
		me.setDevMode(true);
		me.setViewExtension("html");
		me.setViewType(ViewType.FREE_MARKER);
	}
	/**
	 * 配置路由
	 */
	public void configRoute(Routes me) {
		me.add("/", IndexController.class,"/index");	// 第三个参数为该Controller的视图存放路径
		//me.add("/blog", BlogController.class);			// 第三个参数省略时默认与第一个参数值相同,在此即为 "/blog"
	}

请问这是什么情况?

评论区

JFinal

2017-09-24 16:44

这个就是一个简单的页面内容写错了,建议指令定部分重写一下,注意全角半角之类的

溪碧旗

2017-09-24 17:02

在配置中已经明确指定为me.setViewType(ViewType.FREE_MARKER);只是扩展名为.html就出错了.改为.ftl正常

溪碧旗

2017-09-24 17:05

@JFinal 没有全解斗角问题,个人感觉是渲染时扩展名优先了.

溪碧旗

2017-09-24 17:07

@JFinal 没有全解斗角问题,个人感觉是渲染时扩展名优先了,即使调用renderFreeMarker("index.html");这样也是出错的.只有扩展名为ftl不出错.

JFinal

2017-09-24 17:11

@溪碧旗 绝对不是扩展名的问题,我用过多年的 freemarker,而且从来只用 html 为扩展名

溪碧旗

2017-09-24 17:16

freemarker我自认为还是熟悉的,这也只是一个简单的测试,初次试用 jfinal,下载的是最新包.并且明确指定了 me.setViewType(ViewType.FREE_MARKER); 调用 renderFreeMarker("index.ftl");render("index.ftl");两种都不会出错.但renderFreeMarker("index.html");和render("index.html");是同样的错误,说明模板文件内容肯定没有错.只可能是在jfinal中是扩展名优先的

溪碧旗

2017-09-24 17:18

@JFinal 我指的是在tomcat中运行出错,用run as JavaApplication的方式并不会出错.

JFinal

2017-09-24 17:35

@溪碧旗 tomcat 出错,看看是不是 freemarker 的 jar 包版本不同?

有一点是非常明确的: jfinal 在支持 freemarker 时,并没有 html、ftl 的分别,都是一视同仁,看一下 FreeMarkerRender.java 这份源代码就知道了,没有区分过扩展名

JFinal

2017-09-24 17:37

总感觉是模板中的内容不正确,异常提示很明确,就是内容无法解析,看一下部署到 tomcat 下的模板文件内容,或许有所不同,看现场

溪碧旗

2017-09-24 17:43

@JFinal 如果模板内容有错,那renderFreeMarker("index.ftl");肯定也是错的.

溪碧旗

2017-09-24 17:50

@JFinal 如果模板内容有错,那run as Java Application也同样会出错.

溪碧旗

2017-09-24 17:56

@JFinal 模板文件就这么4行简单的代码,还能错到哪里去啊freemarker-2.3.20.jar

热门反馈

扫码入社