Konwertuję istniejącą aplikację webową Tiles 1 do architektury Tiles 2. Mam problem z przekazaniem wartości ze strony JSP do atrybutów kafelków.Jak przekazywać wartości z JSP do atrybutów płytek?
Oto mój plik definicji płytki (płytki-definition.xml)
<tiles-definitions>
<definition name="cda.layout" template="/jsp/layouts/layout.jsp">
<put-attribute name="pageTitle" value="StoryTitle" type="string"/>
<put-attribute name="pageHeader" value="StoryHeader" type="string"/>
<put-attribute name="resources" value="" type="string"/>
</definition>
</tiles-definitions>
layout.jsp wygląda następująco:
<html>
<head>
<title><tiles:insertAttribute name="pageTitle" flush="true"/></title>
</head>
<body>
...
...
<div class="content">
<h1><tiles:insertAttribute name="pageHeader" flush="true"/></h1>
</div>
...
...
</body>
</html>
Mam stronę historii, która wykorzystuje układ i trzeba przekazać wartości do atrybutów szablonu.
<%
// create a business object and populate
String mytitle= story.getTitle();
String myheader = story.getHeader();
%>
<tiles:insertTemplate template="../layouts/layout.jsp" flush="false" >
<tiles:putAttribute name="pageTitle" value="${mytitle}"/>
<tiles:putAttribute name="pageHeader"value="${myheader}"/>
</tiles:insertTemplate>
W story.jsp mogę System.out.print() wartości dla mytitle, myheader a oni pokazują prawidłowe. Ale te wartości NIE są przekazywane atrybutom płytki.
Każdy pomysł, jak to naprawić?
JB, to rozwiązanie zadziałało. Wielkie dzięki. –
Dziękuję za odpowiedź, używam tego rozwiązania, ale problemem jest wynik $ {story.title} Tytuł historii. Jak widzisz, $ {story.title} będzie traktowane jako zmienna i wartość. Chociaż właśnie przekazuję go z Java, a nie z JSP. –