【问题标题】:Nested areas Magnolia嵌套区域 Magnolia
【发布时间】:2017-11-01 09:45:51
【问题描述】:

好吧,我正在制作自己的模块,并希望创建一个包含一些孩子的嵌套区域。目前我正在创建自己的巢

<div id="feedGroup">
   [@cms.area name="example"/]
   [@cms.area name="feed"/]
</div>

我的一个领域:

@Area("example")
    @AvailableComponentClasses({Example.class})
    public static class ExampleArea {

        @RequestMapping("/main/example")
        public String render() {
            return "pages/areas/example.ftl";
        }
    }

我的 ftl 示例:

[@cms.component content=component/]

我的 ftl 提要:

[#list components as component]
    [@cms.component content=component/]
[/#list]

我想做的事(关注link):

@Area("feed")
@Controller
@AvailableComponentClasses({ContentFeed.class})
public static class ContentFeedArea {

    @Area("example")
    @AvailableComponentClasses({Example.class})
    public static class ExampleArea {

        @RequestMapping("/main/example")
        public String render() {
            return "pages/areas/example.ftl";
        }
    }

    @RequestMapping("/main/contentFeed")
    public String render() {
        return "pages/areas/contentFeed.ftl";
    }
}

它给了我错误:“内容”参数已传递,但未指定或指定错误。有人可以启发我或指导我如何正确吗?

【问题讨论】:

    标签: java freemarker magnolia


    【解决方案1】:

    IIRC 区域不能有嵌套区域,因为它是直接子级。

    要达到预期的效果:

    • 将顶部区域定义为单组件区域(甚至可能自动生成该组件,因此它始终在其中)和
    • 在上面定义的组件中,定义你想要的嵌套区域。

    【讨论】:

      【解决方案2】:

      问题在于您仅在控制器中定义了嵌套区域。您还应该将它们嵌套在模板中:

      <div id="feedGroup">
          [@cms.area name="feed"/]
      </div>
      

      pages/areas/contentFeed.ftl的内容:

      <div>
         [@cms.area name="example"/]       
      </div>
      

      模板pages/areas/example.ftl应该是:

      [#list components as component]
          [@cms.component content=component/]
      [/#list]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-11-04
        • 2010-09-16
        • 2016-12-18
        • 1970-01-01
        • 1970-01-01
        • 2011-02-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多