Unremitter 2011-08-28 21:22
浏览 212
已采纳

一个关于Freemark和servelet组合的问题?请知道的朋友帮忙一下~

[code="java"]Map root = new HashMap();

root.put("message", "Hello World!");

Template t = cfg.getTemplate("test.ftl");

System.out.println(t.getEncoding());//GBK编码

response.setContentType("text/html; charset=" + t.getEncoding());

Writer out = response.getWriter();

try {

t.process(root, out);

} catch (TemplateException e) {

throw new ServletException(

"Error while processing FreeMarker template", e);

} [/code]

这是http get或者post方法里面的内容.主要问题是try...catch..部分的问题.里面执行的是Template中的process方法.
执行这个方法可能会抛出异常.

问题:
抛出异常时无法设置response的状态码.返回的居然还是200状态码.而我请求端是根据状态码来处理的.出异常了还200的话.我会请求端会得到异常信息直接返回给用户.这样是不行的.请问下,抛出异常时改如何设置response的错误状态码呢??

执行t.process(root,out)前设置是有效的.执行后设置是无效的..知道的朋友们帮忙回答下~~ 因为没分了.所以没办法给分.只能表示万分感谢了~~~

  • 写回答

15条回答 默认 最新

  • myali88 2011-08-29 10:17
    关注

    [code="java"]
    CharArrayWriter out = new CharArrayWriter(1000);
    //...
    resp.getWriter().write(out.toCharArray());
    resp.flushBuffer();
    [/code]
    这样不就可以把它写入到响应了吗!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(14条)

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器