1

我想知道是否有一种方法可以使用正常的结果类型从 Struts2 操作(处理 jsp 后的最终 HTML)下载生成的 HTML。我不想显示页面,而是下载它。

我试过的:

<result name="success" type="stream">
   <param name="location">/jsp/dummy.jsp</param>
   <param name="contentType">application/text</param>
   <param name="contentDisposition">attachment; filename="page.html"</param>
</result>

我不想使用类似的东西:

UrlReader.read("generateHTMLAction")

并将其放入输入流中,因为我遇到了一些编码问题。任何想法都会受到赞赏。谢谢大家。

4

2 回答 2

1

返回响应的处理主要取决于 HTTP 标头以及浏览器如何解释它们。因此,据我所知,您可以使用标准调度程序结果类型和 JSP。您可以使用 JSP 指令设置适当的 HTTP 标头,以使浏览器以您喜欢的任何方式处理响应负载。

于 2012-11-28T20:30:37.650 回答
0

我不知道是否或如何做到这一点;

我可以对你说的是:

  • 它在这里不存在任何location参数:它来自其他结果类型(DispatchResult、FreeMarker 等),而不是来自Stream 类型。不错的尝试,但我很确定 Struts2 结果类型中没有任何开箱即用的东西可以满足您的需求;

  • 您不能使用Interceptor's PreResultListener功能,因为它适用于最终结果但在渲染之前,然后完全跳出拦截器;

    我的 2 美分:

    如果您想出于调试目的而不是以编程方式执行此操作,那么真正的问题是您不能使用View Source浏览器的功能,因为结果已经被浏览器解析“污染”,那么您可以尝试使用PlainText结果类型(未经测试,这只是一个想法,我从未使用过它),获取最终设置您的 JSP 的原始内容charSet,然后使用适当的编辑器(Eclipse、Notepad++ 等)读取原始 JSP。

于 2012-11-28T15:35:33.437 回答