如何在 Magnolia Blossom 中进行 AJAX 调用?
Posted
技术标签:
【中文标题】如何在 Magnolia Blossom 中进行 AJAX 调用?【英文标题】:How to make an AJAX call in Magnolia Blossom? 【发布时间】:2015-05-08 12:21:42 【问题描述】:我是木兰花的新手。
我必须在 Blossom 的应用程序中执行 AJAX
调用。
我们每个组件都有一个控制器。所以我无法发出AJAX
请求。
谁能建议我如何做到这一点?
【问题讨论】:
【参考方案1】:您可以定义一个不同的 Servlet(和 Web 应用程序上下文),您可以定义一个 Servlet 来处理从 /rest/* 开始的所有请求,然后在您的 web.xml 中的下面,您可以定义开花 Servlet。 剩下的就是配置了,试试看如何创建一个有2个不同上下文的webapp。
【讨论】:
【参考方案2】:进入 servlet 容器的请求无法访问您用于呈现内容的控制器。没有内容,它们就毫无用处,也不会产生有意义的输出。您需要一个单独的 DispatcherServlet 来处理这些 AJAX 请求。
有两种方法可以实现这一点。您可以将新的 DispatcherServlet 添加到 web.xml,也可以将 servlet 添加到安装模块时安装的模块。
后者是更好的选择,因为您不需要拥有两个单独的 ApplicationContext。启动时在模块中创建的将是两个 DispatcherServlet 的父级,因此两者都可以访问其中的 bean。您也不需要更新 web.xml,这使得模块安装和 Magnolia 升级更容易。
在你的模块描述符中添加这个 sn-p:
<servlets>
<servlet>
<name>dispatcher</name>
<class>org.springframework.web.servlet.DispatcherServlet</class>
<mappings>
<mapping>/ajax/*</mapping>
</mappings>
<params>
<param>
<name>contextConfigLocation</name>
<value>classpath:/ajax-servlet.xml</value>
</param>
</params>
</servlet>
</servlets>
Magnolia wiki https://wiki.magnolia-cms.com/display/WIKI/Adding+a+DispatcherServlet+to+a+Blossom+module 中描述了此主题和其他主题
【讨论】:
嗨@sigget,可以做更多澄清,因为我对开花很陌生。开花中的模块描述符是什么?是 *module.xml 文件吗?如果我们在这里添加,那么下一步要做什么? 如果您有任何示例示例,它会更有帮助。谢谢。 是的,模块描述符是您的 src/main/resources/META-INF/magnolia/根据你想得到什么,你也可以使用 Magnolia 的 REST 模块。例如阅读网站标题,您可以拨打http://localhost:8080/magnoliaAuthor/.rest/properties/v1/website/demo-project/siteTitle
更多详细信息documentation
您还可以使用 REST 模块通过注释源代码来非常轻松地添加您自己的端点。
HTH, 一月
【讨论】:
以上是关于如何在 Magnolia Blossom 中进行 AJAX 调用?的主要内容,如果未能解决你的问题,请参考以下文章
Magnolia Blossom : 两个页面共享同一个区域
从另一个 Magnolia 模块访问 Spring 服务(不使用 Spring Blossom)