Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 包括某些页面的特定内容_Java_Tapestry - Fatal编程技术网

Java 包括某些页面的特定内容

Java 包括某些页面的特定内容,java,tapestry,Java,Tapestry,我有一个layout.tml,在这里我定义了我希望我的每个页面都有的常见内容。然而,现在我有一个问题,当我想为某个页面包含特定内容(例如营销)时。我想这是个错误的想法,但在我的layout.tml中,我创建了marketingBlock。我想把它隐藏起来,直到我把它调用到某个地方,比如page2.tml,我想让那个页面包含这个块。问题是,它并没有出现 那我该怎么做呢 <t:block id="marketingBlock"> <div class="row market

我有一个layout.tml,在这里我定义了我希望我的每个页面都有的常见内容。然而,现在我有一个问题,当我想为某个页面包含特定内容(例如营销)时。我想这是个错误的想法,但在我的layout.tml中,我创建了marketingBlock。我想把它隐藏起来,直到我把它调用到某个地方,比如page2.tml,我想让那个页面包含这个块。问题是,它并没有出现

那我该怎么做呢

<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">