如何在Magnolia Blossom中进行AJAX调用?

时间:2015-05-08 12:21:43

标签: ajax magnolia

我是Magnolia Blossom的新手。

我必须在Blossom中的应用程序中执行AJAX调用。 我们每个组件都有一个控制器。所以我无法提出AJAX请求。

任何人都可以建议我如何实现这一目标?

3 个答案:

答案 0 :(得分:0)

您可以定义一个不同的Servlet(和Web应用程序上下文),您可以定义一个servlet来处理所有以/ rest / *开头的请求,然后在web.xml下面的那个请求中定义开花servlet。 所有其余的都是配置,尝试了解如何创建具有2个不同上下文的webapp。

答案 1 :(得分:0)

进入servlet容器的请求无法访问您用于呈现内容的控制器。如果没有内容,他们就会毫无用处,并且不会产生有意义的输出。您需要一个单独的DispatcherServlet来处理这些AJAX请求。

实现这一目标有两种方法。您可以将新的DispatcherServlet添加到web.xml,也可以将servlet添加到安装模块时安装的模块。

后者是更好的选择,因为您不需要拥有两个单独的ApplicationContexts。在启动时在模块中创建的那个将是两个DispatcherServlet的父级,因此两者都可以访问其中的bean。您还不需要更新web.xml,这使得模块安装更容易,并且Magnolia的升级更容易。

在您的模块描述符中添加以下代码段:

<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维基https://wiki.magnolia-cms.com/display/WIKI/Adding+a+DispatcherServlet+to+a+Blossom+module

中有所描述

答案 2 :(得分:0)

根据您想要的内容,您还可以使用Magnolia的REST模块。例如,阅读网站标题,您可以在documentation

致电http://localhost:8080/magnoliaAuthor/.rest/properties/v1/website/demo-project/siteTitle了解更多详情

您可以使用REST模块通过仅注释源代码来轻松添加自己的端点。

HTH, 扬