ich eine ziemlich grundlegende tiles1 Setup mit Header, Menü und Inhalt als so:Tiles1 - Weitergabe Attribute Abschnitte jsp
<definition name="Main" path="/WEB-INF/jsp/MainLayout.jsp">
<put name="header" value="/WEB-INF/jsp/Header.jsp"/>
<put name="menu" value="/WEB-INF/jsp/Menu.jsp"/>
<put name="content" value=""/>
</definition>
Alle meine subpages diese Definition erweitern und eine jsp für den Abschnitt Inhalt liefern:
Was ich suche ist ein Weg für die SearchPage Definition oben, um ein Attribut zu "putten", so dass es in Search.jsp verwendet werden kann. Mein erster Versuch war:
<definition name="SearchPage" extends="Main">
<put name="content" value="/WEB-INF/jsp/Search.jsp"/>
<put name="showOptions" value="true" type="string"/>
</definition>
Aber in diesem Fall ist die showOptions Attribut nur auf MainLayout.jsp verfügbar wäre und nicht zu search.jsp weitergegeben würde. Ich weiß, dass es eine Möglichkeit gibt, sie explizit über useAttribute auf der Layoutseite weiterzuleiten, aber ich möchte sehr gerne vermeiden, dass die Layoutseite über jede Variable, die ich möglicherweise in den Unterseiten verwenden könnte, informiert werden muss.
N.B. In tiles2 scheint es ein raffiniertes cascade = "true" -Attribut zu geben, das genau das tut, wonach ich suche, aber leider denke ich, dass ich bei tiles1 feststecke.
Nice one-line fix dank GriffeyDog:
In MainLayout.jsp alle Kacheln importieren Attribute in den Request-Scope. Sie sind dann für alle Unterseiten verfügbar (achten Sie auf Namenskollisionen).
<tiles:importAttribute scope="request"/>
Ich fand auch eine alternative Methode, die eine Definition mit den notwendigen Attributen als Inhalt anstelle einer JSP-Seite verwendet: http://wiki.apache.org/struts/StrutsDocTiles (Lösung # 1)
Großartig, das hat funktioniert. Ich werde das Original mit dem Update aktualisieren. Vielen Dank! –