2011-07-20 28 views
0

我使用Apache Tiles 2的Spring MVC框架。我希望能夠讓多個控制器都使用相同的視圖(不同的邏輯,一些基本的演示文稿)。我可以輕鬆做到這一點。我現在想要的是爲每個控制器定義不同的Tiles定義,全部使用相同的JSP文件,但每個都傳遞不同的模板變量(頁面標題,簡短描述等)。這是我的Tiles模板定義文件:在模板中的瓷磚2訪問變量

<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。任何人都知道發生了什麼事?

回答

0

然後我嘗試這個/WEB-INF/views/index.jsp:

你怎麼嘗試呢?在你的控制器,你會指定瓷磚視圖的名稱,多JSP瓷磚沒有一個人會爲了用它來渲染頁面:

@RequestMapping("index2") 
public String index2() { 
    // ... 
    return "index2"; 
} 
+0

在我的發展這一點上,沒有控制,我有一個''。這似乎讓我想到我想要的模板,但我當然不知道如何。 – Nik

+0

請用控制器試一下,因爲我有一些類似的例子,它沒有問題。 – sinuhepop

+0

我正在努力做到這一點,所以任何建議,你可以給我將非常感激。 – Nik