如何将信息放入tapestry5的输出流中?
当用户输入页面时我需要一个页面打开一个用于保存的对话框或者用输出流信息打开文件。
我写下一段代码:
公共类索引{
@Inject
private RequestGlobals requestGlobals;
@OnEvent("activate")
public void onActivate() {
try {
HttpServletResponse response = requestGlobals.getHTTPServletResponse();
response.setContentType("text/txt");
PrintWriter out = response.getWriter();
out.println("hellooooooo");
out.flush();
} catch (IOException ex) {
Logger.getLogger(Index.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
我希望结果只是“helloooooooo”,但是(“helloooooooo”+我的html原始页面)
答案 0 :(得分:3)
您的方法应具有StreamResponse的返回类型。您将返回StreamResponse接口的实现,该接口只返回您想要的内容类型所需的数据。
在这里查看:
http://tapestry.apache.org/tapestry5/apidocs/
更多信息:
http://tapestry.formos.com/nightly/tapestry5/tapestry-core/guide/pagenav.html
答案 1 :(得分:1)
如果您正在处理大型响应流,使用StreamResponse可能会有些不方便且效率低下(因为您必须返回InputStream)。最好是直接将回复写入OutputStream。
幸运的是,在Tapestry Wiki中,有一个页面可以解决这个问题:Tapestry5: How To Create A Component Event Result Processor。