1

我们正在使用 Spring 3 和 Apache Tiles 创建在 Tomcat 7 上运行的 Web 应用程序。

是否有可能在运行时使用这些工具从 Java 代码中的 JSP 文件手动生成 HTML?

例如,我有sample.jsp一些基于传递模型的内容动态生成的内容。我想将 JSP 中呈现的 HTML 存储在 String 对象中。

在非常高的抽象层次上:

String renderedHtml=renderHtmlFromJSP(jspName,model);

如果没有,是否可以动态更改 Tiles 元素的定义?例如

<put-attribute name="headerRight" value="dynamically_set_value" />

?

4

1 回答 1

1

这个问题可以与这个问题相结合:Execute and render JSP inside a Filter 所以你renderHtmlFromJSP可以看起来像:

String renderHtmlFromJSP(
      String fileName, 
      ???? dataModel, 
      HttpServletRequest sourceRequest){
   //you need emulate response to produce output in string (see bellow)
   MyStringResponse resp = new MyStringResponse();
   sourceRequest
        .getRequestDispatcher("/WEB-INF/header.jsp")
        .include(request, resp);
   resp.flushBuffer();
   return resp.getMyInternalBufferContent(); 
}

要实现 MyStringResponse 使用HttpServletResponseWrapper覆盖方法getOutputStream()并返回 ByteArrayOutputStream 的实例

于 2012-08-28T14:39:04.557 回答