1

私はかなり長い間この質問を自問してきましたが、ウェブ上でこれに対する良い解決策を見つけられませんでした.

私は Tiles2 と Spring MVC を使用しており、ボディ タイル内でページ タイトルを動的に設定したいと考えています。方法はありますか?

<definition name="mainTemplate" template="/WEB-INF/template/main.jsp">
 <put-attribute name="header" value="/WEB-INF/template/header.jsp" />
 <put-attribute name="footer" value="/WEB-INF/template/footer.jsp" />
 <put-attribute name="body" value="/WEB-INF/template/blank.jsp" />
</definition>

<definition name="list" extends="mainTemplate">
 <put-attribute name="body" value="/WEB-INF/jsp/list.jsp" />
</definition>

私の現在の解決策は、コントローラー内でタイトルを設定することです

 model.addAttribute("pageTitle", "blubb");

テンプレートで ac:out を実行

4

4 に答える 4

4

タイルテクニック

「ページ タイトルを動的に設定したい」とは、「表示されているタイルに基づいてページ タイトルを設定し、それを行うためにタイル機能を使用したい」という意味である場合:

  1. タイトル プロパティを定義します。このようなもの: <put-attribute name="pageTitle" value="Title"/>
  2. ページのレイアウトで pageTitle プロパティを参照します。このようなもの: <title><tiles:getAsString property="pageTitle"/></title>
  3. 重要なタイルに pageTitle プロパティを設定します。<definition 何とか何とか><put-attribute name="pageTitle" value="何とか何とか"/></definition>

可変テクニック

この手法を実行する最も簡単な方法は、モデルに属性を追加し、その属性を el 式で参照することです。例えば、

コントローラーでこれを行うことができます:

文字列 pageTitle;

pageTitle = "何か";
Model.add("ページタイトル", ページタイトル);

次に、ページの「PageTitle」属性を次のように参照します。

<頭>
<title>${PageTitle}</title>

次のように c:out を使用できます。

<頭>
<title><c:out value="${PageTitle}"/></title>
于 2011-03-28T17:19:40.647 に答える
1

また、DwB の 2 つの回答を組み合わせて、両方の長所を活用することもできます。

<title>
    <tiles:insertAttribute name="title" ignore="true" />
    <c:if test="${not empty pageTitle}">
        <c:out value="${pageTitle}"></c:out>
    </c:if>
</title>

一部のページに静的なタイトルを付けたい (そのため tiles.xml ファイルで設定するだけでよい)、一部のページに完全に動的なタイトルを付けたい (tiles.xml には何も設定せず、モデルに pageTitle を追加するだけ) 場合に便利です。オブジェクト) またはその両方 (私のお気に入り) の一部で、静的な前半と動的な後半があります。

于 2013-01-10T21:50:23.050 に答える
1

これは私のために働いています。何か問題がありますか?

タイル:

<put-attribute name="myProjectRevision" value="1.0" type="string" />

JSP:

<span id="my-project-revision"><c:out value="${myProjectRevision}"/></span>
于 2011-08-03T14:40:05.107 に答える
-2

tiles.xml:

<definition ... >
    ...
    <put-attribute name="title" value="My Title" />
</definition>

JSP:

<h1><tiles:getAsString name="title"/></h1>

ただし、これは、アプリケーションの言語が 1 つしかない場合にのみ有効なソリューションです。

于 2011-03-29T09:48:24.737 に答える