首页 > 解决方案 > activeweb ContentFor 标签什么都不渲染?

问题描述

我已经阅读content for and yield tag了 activeweb 文档的部分。和 activeweb 版本

16:59 $ mvn dependency:tree | grep activeweb
[INFO] +- org.javalite:activeweb:jar:2.2:compile
[INFO] +- org.javalite:activeweb-testing:jar:2.2:test

layout.ftl模板代码列表如下:

{
"ext": [<@yield to="ext"/>],
"data": ${page_content}
}

和查看页面:

<@content for="ext">
"hello", "world"
</@content>
["this is data"]

我运行控制器并且ext什么都不渲染。我错过了什么?

顺便说一句,我如何检查是否ContentForTag包含一些内容?,我希望 layout.ftl 看起来像

{
<#if ext?has_content?>
"ext": [<@yield to="ext"/>],
</#if>
"data": ${page_content}
}

标签: javaliteactiveweb

解决方案


你有一个两部分的问题:

  1. 我创建了 @ContentFor 标记,它没有呈现任何内容。
  2. 如何有条件地渲染其内容。

要回答您的第一个问题,我可以说不确定为什么它不适合您。我根据您的代码创建了一个相同的示例,它按预期工作。请查看 ActiveWeb Simple 项目content_for分支上的最后一次提交:https ://github.com/javalite/activeweb-simple/tree/content_for 您可以运行此项目以查看您的代码是否正常工作。

在此处输入图像描述

要回答您的第二个问题,您需要在视图中使用条件,而不是在布局中。因此,视图将如下所示:

<#if condition >
    <@content for="ext">
    "hello", "world"
    </@content>
    ["this is data"]
</#if>

推荐阅读