0

使用 Blossom 2 和 Magnolia 4.5,我正在尝试做这样的事情:

@Controller
@Template(id = "topicpages:pages/topics", title = "MyTemplate")
public class TopicTemplate {
...
@TabFactory("DialogInclude2")
public void topicTagTab2(TabBuilder tab){
tab.addInclude("topicpages/pages/topicLayout.jsp");
}
...
}

代码还有一点点,但我认为这是相关的部分。问题是,当我尝试以这种方式包含 JSP 时,我收到以下错误:2013 年 1 月 3 日下午 2:48:33 org.springframework.web.servlet.DispatcherServlet noHandlerFound WARNING: No mapping found for HTTP request with DispatcherServlet 中的 URI [/.magnolia/dialogs/topicpages/pages/topicLayout.jsp],名称为“控制器”

我熟悉http://wiki.magnolia-cms.com/display/WIKI/Creating+a+custom+control+with+DialogInclude上关于 dialoginclude 的教程,但我不知道该怎么做:“对于一个使用控件的对话框,它需要定义一个名为 controlType 的内容节点,其值为 'include' 和另一个命名文件,其值为要包含的 JSP 的位置。” 因为我所有的对话都是通过 Blossom 创建的。

4

1 回答 1

1

来自 forum.magnolia-cms.com:

回复:使用 addInclude 创建自定义 Magnolia 控件

2 tmattsson 发表于 2013 年 1 月 8 日上午 11:04:27

/.magnolia/dialogs/topicpages/pages/topicLayout.jsp因为您指定了 JSP 的相对路径,所以为呈现您的控件而发出的包含请求。这就是它以 . 开头的原因/.magnolia/dialogs/。如果不打算这样做,则应使用 JSP 的绝对路径。该请求由DispatcherServlet名为Spring 的 Spring 处理,该 Springcontroller没有与此路径匹配的控制器(处理程序)。

尝试将 JSP 直接放在WEB-INF文件夹中,看看是否可以使用addInclude("/WEB-INF/topicLayout.jsp").

如果您尝试对includeSpring执行操作DispatcherServlet,其中控制器将呈现控制器(处理程序),那么您可以在模块描述符中配置它并将其定位include到它和其中的控制器。在这种情况下,.jsp扩展是不必要的。它可能是这样的:addInclude("/custom-controls/topicLayout");

请注意,WEB-INF出于安全原因,将 JSP 文件保存在外部无法访问它们的文件夹中始终是一个好主意。同样,您应该注意在管理界面中添加的用于支持编辑器的功能不应从外部公开。下面映射的所有内容都/.magnolia受到保护,需要登录。

希望有帮助!

// 托比亚斯

于 2013-01-09T16:00:37.387 回答