1

私のWebサイトには、マスターJSPテンプレートがあります。

<html>
 <body>
  <nav>...</nav>
  <tiles:insertAttribute name="body" />
  <footer>...</footer>
 </body>
</html>

そして複数のページテンプレート:

<p>This is content</p>

ここで、ページテンプレートでJavascriptとCSSインクルードを定義できるようにしたいので、<head>マスターテンプレートの前にページテンプレートを実行する必要があります。

PHPでは、これに出力バッファリングを使用できます。

<? ob_start()
   include $slave;
   $body = ob_get_clean(); ?>
<html>
 <head>
 <? foreach($javascripts as $script) ?>
     <script src="<?=$script?>" />
 <? endforeach ?>
 <body>
  <nav>...</nav>
  <?=$body?>
  <footer>...</footer>
 </body>
</html>

JSPで利用可能な同様のテクノロジーはありますか?または、私が必要なものを達成するための別の方法はありますか?Spring MVC 3 +ApacheTilesで使用しています

4

3 に答える 3

1

タイル定義に追加の属性(デフォルトでは空白)を定義し、この属性をレイアウトページのヘッドセクション内に挿入することができます。これが、Tilesが機能することになっている方法です。

または、Tilesの代わりにSitemeshを使用することもできます。これは、提案を実行します。これは、応答をバッファリングするフィルターを使用し、要素の一部を抽出してテンプレートに配置することで応答を装飾します。

SitemeshとTilesを一緒に使用することは可能かもしれないと思いますが、それは少し複雑になりすぎるでしょう、私見。

于 2012-02-02T22:47:37.907 に答える
1

1)コアtaglibを有効にする

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

2)コンテンツを取得して印刷する

<c:set var="content">You grab content</c:set>
<c:out value="${content}" />
于 2013-11-09T16:58:10.383 に答える
0

私は自分の問題に対する別の解決策を見つけました。

マスターテンプレートを次のように拡張しました。

<head>
<tiles:insertAttribute name="head" defaultValue="" />
</head>

タイル定義XMLファイルを生成するスクリプトがあります(すでにあります)。サブテンプレート(たとえばview.jsp)に追加のCSSまたはJavascriptが必要な場合view_head.jspは、正しいインクルードを含む別のファイルを作成し、スクリプトがheadそのファイルに属性を設定します。

于 2012-02-02T22:47:55.693 に答える