1

Spring 3 と Apache Tiles を使用して、Tomcat 7 で実行される Web アプリケーションを作成しています。

これらのツールを使用して、実行時に Java コードで JSP ファイルから手動で HTML を生成することは可能ですか?

たとえばsample.jsp、渡されたモデルのコンテンツに基づいて動的に生成されたコンテンツを使用しています。JSP からレンダリングされた HTML を String オブジェクトに格納したいと考えています。

非常に高いレベルの抽象化:

String renderedHtml=renderHtmlFromJSP(jspName,model);

そうでない場合、タイル要素の定義を動的に変更することは可能ですか? 例えば

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

?

4

1 に答える 1

1

この質問は、次の質問と組み合わせることができ ます。フィルター内でJSPを実行およびレンダリングすると、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 に答える