Spring和Tiles - 手动呈现JSP文件

时间:2012-08-09 16:58:23

标签: spring jsp tiles

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

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

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

在非常高的抽象层次上:

String renderedHtml=renderHtmlFromJSP(jspName,model);

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

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

1 个答案:

答案 0 :(得分: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的实例