Magnolia Blossom : 两个页面共享同一个区域
Posted
技术标签:
【中文标题】Magnolia Blossom : 两个页面共享同一个区域【英文标题】:Magnolia Blossom : Two pages sharing the same area 【发布时间】:2013-02-05 17:06:00 【问题描述】:我正在为我的 Web 应用程序使用 Magnolia Spring Integration (Blossom),但我绝对不明白如何(如果可能的话)在两个页面之间共享一个独特的区域。
这就是我迄今为止的工作方式:
我有三个模板main-template
、template-1
和template-2
。
template-1
和 template-2
都通过重新定义自己的 "body" 区域重定向到 main-template
。
在template-1
的班级中,我有三个领域:content-area
、area-1
和area-2
在template-1
的脚本中,我将三个区域包含在以下指令中:[@cms.area name="content-area"/]
、[@cms.area name="area-1"/]
和[@cms.area name="area-2"/]
template-2
类和脚本中定义了相同的区域
我想要在template-1
和template-2
之间分享area-1
。问题是,通过在每个类中重新定义它们,它们被视为不同的区域......
通过我的测试和 magnolia 文档,我了解到一个区域只能在模板类中定义,因此可以在该模板的脚本中访问它,并且只有在与页面关联的模板类中直接定义的区域才会是处理/渲染。
无论我尝试什么,只要这些区域未在页面的模板类中定义,它们就无法访问,因此包含的页面不会呈现它们的区域。
有没有人知道我如何在另一个模板中“包含”或处理来自其他模板的“区域”?还是我做错了?
感谢您的宝贵时间。
问候。
【问题讨论】:
【参考方案1】:我知道这是一个老问题,但它仍然是一个有效的问题,所以让我回答一下: 据我所知,区域可以从其他区域继承(使用“扩展...”的普通 Java 类继承)。据我所知,这在 2013 年还没有,但现在可以了。我知道这一点是因为我曾将其作为功能请求提交一次,并且在某个时候被标记为已解决,而且我想我也成功使用过一次(记不太清了)。
如果由于某种原因仍然无法从超类扩展区域,那么您仍然可以使用传统工具,例如将逻辑放入辅助类并使实际区域非常小(即调用共享辅助类)。并且实际的模板(.jsp 或 .ftl 文件)无论如何都可以共享。
【讨论】:
以上是关于Magnolia Blossom : 两个页面共享同一个区域的主要内容,如果未能解决你的问题,请参考以下文章
从另一个 Magnolia 模块访问 Spring 服务(不使用 Spring Blossom)
如何在 Magnolia Blossom 中进行 AJAX 调用?