Wie übergibt man Werte von JSP-Fliesen-Attribut?
Bin ich konvertieren eines vorhandenen Fliesen 1 webapp zu Fliesen 2-Architektur. Ich habe Probleme bei der übergabe von Werten aus der JSP-Seite zu Fliesen-Attribute.
Hier ist mein tiles-definitions-Datei (tiles-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 sieht wie folgt aus:
<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>
Habe ich eine Geschichte-Seite, die das layout verwendet und müssen für die übergabe von Werten an template-Parametern.
<%
//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>
In der Geschichte.jsp kann ich System.aus.print() die Werte für mytitle, myheader und Sie zeigen richtig. Aber diese Werte sind NICHT an die Kachel-Attribute.
Irgendeine Idee, wie man dieses Problem beheben?
Du musst angemeldet sein, um einen Kommentar abzugeben.
${mytitle}
ist eine JSP-EL-Ausdruck, der bedeutet: finden Sie ein Attribut in der page-scope, oder anforderungsbereich, oder session-scope oder application-scope, mit dem Namen "mytitle".Durch die Definition einer scriptlet-variable, Sie haben nicht definiert ein Attribut in jedem dieser Bereiche. Es würde funktionieren, wenn Sie hatte
Aber die Verwendung von scriptlets in JSPs ist eine schlechte Praxis. Ich weiß nicht, wo deine Geschichte bean kommt, aber es ist wahrscheinlich ein request-Attribut. Wenn ja, können Sie eine neue Seite-scope-Attribut auf diese Weise, mit Hilfe der JSTL:
Dies ist unnötig, obwohl, da könnten Sie diesen Ausdruck direkt in die Fliesen Tags:
Lesen Sie mehr über die JSP-EL in dieses tutorial.