我從你的問題中瞭解到,你將在tiles-defs.xml文件中爲1個JSP定義2個定義。像
<definition name="outputPage" extends="mainLayout">
<put name="title" value="HELLO" />
<put name="body" value="/pages/Welcome.jsp" />
</definition>
<definition name="outputPage2" extends="mainLayout">
<put name="title" value="HELLO2" />
<put name="body" value="/pages/tile2.jsp" />
</definition>
的一種方式,我建議來實現你的要求是通過屬性設置模塊類型(比如request.setAttribute("module", "module2");
)。
假設您將在struts-config.xml中爲同一個JSP頁面創建2個轉發。
在JSP頁面(tileTest.jsp)
<action
path="/Welcome"
forward="/pages/tileTest.jsp"/>
<action
path="/customerAction"
type="xyz.actions.CustomerAction"
name="customerForm"
scope="request">
<forward name="tile" path="/Welcome.do"></forward>
<forward name="customer" path="/pages/customer.jsp"></forward>
</action>
接着,瓦片將被定義類似
<%@page language="java" pageEncoding="shift-jis"%>
<%@ taglib uri="/tags/struts-bean" prefix="bean" %>
<%@ taglib uri="/tags/struts-html" prefix="html" %>
<%@ taglib uri="/tags/struts-logic" prefix="logic" %>
<%@ taglib uri="/tags/struts-tiles" prefix="tiles" %>
<logic:notEmpty name="module">
<logic:equal name="module" value="module1">
<tiles:insert definition="outputPage" flush="true" />
</logic:equal>
</logic:notEmpty>
<logic:notEmpty name="module">
<logic:equal name="module" value="module2">
<tiles:insert definition="outputPage2" flush="true" />
</logic:equal>
</logic:notEmpty>
<logic:empty name="module">
<tiles:insert definition="outputPage" flush="true" />
</logic:empty>
你到底想改變什麼? –
@dave-newton在JSP頁面中基於該模塊的圖塊。對於一組JSP,有兩組圖塊。 – Urban
你是什麼意思的模塊和動態變化?模塊是一個帶有內部瓦片的jsp,另一個模塊是不同的jsp,具有不同的瓦片集合?那麼你可以創建一個動作,落在其中一個動作上? http://struts.apache.org/1.x/struts-tiles/examples.html告訴你如何有一個佈局來組合x個tile。難道你不能有另外一個不同的瓷磚佈局和一些鏈接,或者從這兩個佈局中去哪裏?瓦片的想法是,您定義一次,並通過在每個頁面中以不同的順序添加標籤,將n次組合到不同的佈局jsp:s。 – mico