Java 包括某些页面的特定内容
我有一个layout.tml,在这里我定义了我希望我的每个页面都有的常见内容。然而,现在我有一个问题,当我想为某个页面包含特定内容(例如营销)时。我想这是个错误的想法,但在我的layout.tml中,我创建了marketingBlock。我想把它隐藏起来,直到我把它调用到某个地方,比如page2.tml,我想让那个页面包含这个块。问题是,它并没有出现 那我该怎么做呢Java 包括某些页面的特定内容,java,tapestry,Java,Tapestry,我有一个layout.tml,在这里我定义了我希望我的每个页面都有的常见内容。然而,现在我有一个问题,当我想为某个页面包含特定内容(例如营销)时。我想这是个错误的想法,但在我的layout.tml中,我创建了marketingBlock。我想把它隐藏起来,直到我把它调用到某个地方,比如page2.tml,我想让那个页面包含这个块。问题是,它并没有出现 那我该怎么做呢 <t:block id="marketingBlock"> <div class="row market
<t:block id="marketingBlock">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:block>
营销名称
Layout.tml
${title}
...
...
站点名称
营销名称
&抄袭;公司2015
Page2.tml
...
换个角度思考。布局类是一个组件,与任何Tapestry组件一样,它可以有参数,参数可以是来自父页面的HTML块。因此,如果您希望每个页面向布局组件提供不同的营销内容,那么您希望的方法是通过布局组件的“营销”参数将一个块从包含页面传递到布局组件
请看下面的示例——在该示例中,一个CSS块被传递到布局组件中,但它也可能是一个HTML块
因此,您的Page2.tml将如下所示:
<html t:type="layout" title="TapestryTest Index"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p:marketing>
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</p:marketing>
<body>
<div class="content">
...
</div>
</body>
</html>
营销名称
...
或者,如果您希望多个页面具有相同的营销内容,但允许某些页面完全没有营销内容,则应将营销div放入布局模板中(如示例中所示),并让每个父页面只传入一个布尔参数(“showMarketing”),该参数控制该div是否应出现。然后,您可以在布局中放置一个组件来测试该布尔值
因此,布局模板将具有以下内容:
<t:if test="showMarketing">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:if>
营销名称
每个页面的顶部都会有一个“showMarketing”参数,设置为“true”或“false”:
谢谢您的回复。但是,写两遍营销名称有什么意义呢?是否可以在layout.tml中使用此内容制作一个组件(或您如何称呼它),然后在另一页的同一行中调用它?我建议了两种选择。你可以选择一个或另一个建议,而不是两个都选择。如果有多个页面需要相同的营销内容,请使用第二个建议,即在版面模板中包含营销内容,并让版面组件具有一个布尔参数,每个页面都可以设置为true或false。我将编辑我的答案,使其更清楚一些。如果没有看到您的代码,很难确定,但错误消息非常准确:可能您的布局类缺少showMarketing属性(没有getter/setter,并且字段没有用@Propery注释)。如果您不熟悉组件参数,您可能希望查看Tapestry文档的组件参数页面。您希望查看哪些类代码?关于@Property
注释,我是否必须在布局类中创建带有@Property
注释的showMarketing(什么类型的-对象?)?是的,如果您还没有这样做,请在布局类中添加一个带参数和属性注释的布尔showMarketing字段。
<html t:type="layout" title="TapestryTest Index"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">
<p:marketing>
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</p:marketing>
<body>
<div class="content">
...
</div>
</body>
</html>
<t:if test="showMarketing">
<div class="row marketing">
<h4>Marketing Name</h4>
<img />
<p></p>
</div>
</t:if>
<html t:type="layout" showMarketing="true" title="TapestryTest Index"
xmlns:t="http://tapestry.apache.org/schema/tapestry_5_3.xsd"
xmlns:p="tapestry:parameter">