0

Apache Tiles 2 で Spring MVC フレームワークを使用しています。複数のコントローラーがすべて同じビュー (異なるロジック、いくつかの基本的なプレゼンテーション) を使用できるようにしたいと考えています。私はそれを簡単に行うことができます。ここで必要なのは、コントローラーごとに異なるタイル定義を持ち、すべて同じ JSP ファイルを使用し、それぞれが異なるテンプレート変数 (ページ ヘッダー、短い説明など) を渡すことです。これは私のタイル テンプレート定義ファイルです。

<tiles-definitions>

    <!-- Default Main Template -->
    <definition name=".mainTemplate" template="/WEB-INF/templates/main.jsp">
        <put-attribute name="shortTitle" value="Company ABC" type="string" />
        <put-attribute name="body" value="/WEB-INF/templates/blank.jsp" />
    </definition>

    <!-- Overriding Templates -->
    <definition name="index" extends=".mainTemplate">
        <put-attribute name="title" value="Company Alpha Bravo Charlie" type="string" />
        <put-attribute name="body" value="/WEB-INF/views/index.jsp" />
    </definition>

    <definition name="index2" extends=".mainTemplate">
        <put-attribute name="title" value="Company Other Page" type="string" />
        <put-attribute name="body" value="/WEB-INF/views/index.jsp" />
    </definition>

</tiles-definitions>

次に、これを試してみます/WEB-INF/views/index.jsp

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

<h1>
    Hello world, it's <tiles:getAsString name="title" />!  
</h1>

これを Tomcat にロードしてページを表示すると、例外の長いスタック トレースが表示されます。パイルの上部には と書かれていorg.apache.tiles.impl.CannotRenderException: ServletException including path '/WEB-INF/templates/main.jsp'.} with root cause org.apache.tiles.template.NoSuchAttributeException: Attribute 'title' not foundます。何が起こっているか知っている人はいますか?

4

1 に答える 1

0

次に、この /WEB-INF/views/index.jsp を取得しようとします。

これをどのように試しますか?コントローラーでは、タイル ビューの名前を指定します。ページをレンダリングするために複数の JSP タイルの 1 つが使用されるわけではありません。

@RequestMapping("index2")
public String index2() {
    // ...
    return "index2";
}
于 2011-07-20T18:02:55.393 に答える