jfinal freemarker怎么样生成文件

发布于 2021-11-28 03:23:54 字数 275 浏览 855 评论 3

@JFinal 你好,想跟你请教个问题:

我想在render之前拿到生成的内容,然后保存下来!这个应该怎么做才能拿到

setAttr("DyghPage", res);
//这里取到渲染后的视图内容,然后保存到文件
render("dygh_list_view.html");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

悲喜皆因你 2021-11-30 13:50:51

期待新版出现

睫毛上残留的泪 2021-11-30 02:00:51

   参考 FreemarkerRender.render() 方法中的代码,将 template.process(root, writer); 这行代码中的第二个参数直接换成文件输出的 writer即可。

   jfinal 下一版本直接提供此支持。

眼泪淡了忧伤 2021-11-28 04:29:12

你可以继承FreemarkerRender对象,重写render方法,或者重新实现一个Render;

这是FreeMarkerRender对象的render方法,这里的writer字符流是response的,你生成文件的话,再加个文件输出流,我觉得就可以了

public void render() {
		response.setContentType(contentType);
        
		Map root = new HashMap();
		for (Enumeration<String> attrs=request.getAttributeNames(); attrs.hasMoreElements();) {
			String attrName = attrs.nextElement();
			root.put(attrName, request.getAttribute(attrName));
		}
		
		PrintWriter writer = null;
        try {
			Template template = config.getTemplate(view);
			writer = response.getWriter();
			template.process(root, writer);		// Merge the data-model and the template
		} catch (Exception e) {
			throw new RenderException(e);
		}
		finally {
			if (writer != null)
				writer.close();
		}
	}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文