Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
5.0.4
-
None
-
None
Description
As per http://tapestry.apache.org/tapestry5/tapestry-core/guide/templates.html, the template of a page that calls a layout component must look like this:
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
My Page Specific Content
</t:layout>
The layout component looks like this:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<head>
<title>My Tapestry Application</title>
</head>
<body>
<t:body/>
</body>
</html>
If I want a more sophisticated layout that renders blocks passed as parameters instead of just a body, i'd be tempted to try this:
<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" block1="block:block1" block2="block:block2">
<t:block id="block1">My Page Specific Content for Block 1</t:block>
<t:block id="block2">My Page Specific Content for Block 2</t:block>
</t:layout>
But tapestry can't bind block1 and block2, because they appear in the template after the binding point.
This solution works, but produces an extra <html> tag in the output document:
<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
<t:block id="block1">My Page Specific Content for Block 1</t:block>
<t:block id="block2">My Page Specific Content for Block 2</t:block>
<t:layout block1="block:block1" block2="block:block2"></t:layout>
</html>