activeweb ContentFor 标签什么都不渲染?

activeweb ContentFor tag render nothing?

我已阅读 activeweb 文档的 content for and yield tag 部分。和 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}
}

您的问题分为两部分:

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

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

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

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