2013-01-04 68 views
0

用花2和厚朴4.5,我试图做这样的事情:玉兰花addinclude

@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 警告:未找到HTTP映射在DispatcherServlet中使用URI [/.magnolia/dialogs/topicpages/pages/topicLayout.jsp]的请求,名称为'controller'

我很熟悉关于dialoginclude的教程http://wiki.magnolia-cms.com/display/WIKI/Creating+a+custom+control+with+DialogInclude,但我不确定如何执行此操作:“对于使用控件的对话框,需要定义一个名为controlType的内容节点,其值为'include',另一个名为file的值是要包含的JSP的位置。”因为我所有的对话都是通过Blossom创建的。

回答

1

从forum.magnolia-cms.com:

重新:使用addInclude

2通过tmattsson上年01月08创建自定义厚朴控制,2013上午11时04分27秒

的包括因为您指定了一个到JSP的相对路径,因此请求使您的控件进入/.magnolia/dialogs/topicpages/pages/topicLayout.jsp。这就是为什么它以/.magnolia/dialogs/开头。如果这不是你想使用的绝对路径到你的JSP。该请求由名为controller的Spring DispatcherServlet处理,该控制器没有匹配此路径的控制器(处理程序)。

尝试将JSP直接放置在WEB-INF文件夹中,并查看是否可以使用addInclude("/WEB-INF/topicLayout.jsp")来达到目的。

如果你试图做一个include到春天DispatcherServlet其中控制器将使控制器(处理器),那么你就可以在你的模块描述符中配置它,并针对include它和它里面的控制器。在这种情况下,.jsp扩展名不是必需的。它可能是这样的:addInclude("/custom-controls/topicLayout");

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

希望有帮助!

//托比亚斯