我使用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
。任何人都知道發生了什麼事?
在我的發展這一點上,沒有控制,我有一個' '。這似乎讓我想到我想要的模板,但我當然不知道如何。 –
Nik
請用控制器試一下,因爲我有一些類似的例子,它沒有問題。 – sinuhepop
我正在努力做到這一點,所以任何建議,你可以給我將非常感激。 – Nik