现在有个需求是导出一个文件格式可能是word或者txt等
不去使用poi等中间件
想用
response.setCharacterEncoding("UTF-8"); response.setHeader("Content-disposition", "attachment; " + encodeFileName(request, downloadFileName)); response.setContentType("application/octet-stream;charset=UTF-8");
类似于这种方式去output stream
但是有个问题是,springboot中路由不是jfinal的render,如何把我的一些参数到给我response返回的html模板里?
我看到分享中有人在jfinal的项目中是这么去用的
protected void normalRender(){ Map<Object, Object> data = new HashMap<Object, Object>(); for (Enumeration<String> attrs=request.getAttributeNames(); attrs.hasMoreElements();) { String attrName = attrs.nextElement(); data.put(attrName, request.getAttribute(attrName)); } try { getEngine().getTemplate(view).render(data, response.getOutputStream()); } catch (Exception e) { throw new RenderException(e); } }
那么我在springboot中怎么去做
getEngine().getTemplate(view).render(data, response.getOutputStream());
这么一件事情?
http://www.jfinal.com/doc/6-10
整合以后可以通过JFinalViewResolver.me().getEngine() 来获取engine 对象去使用
剩下的事情就是在 spring boot 中获取 HttpServletResponse response 对象了,我记得是在 action 中直接放处这个参数即可:
public void index(HttpServletResponse response)
有了 Engine 对象与 HttpServletResponse 对象以后,剩下的事情与你在 jfinal 中的用法就完全一样了