如何在 magnolia CMS 中配置自定义 servlet

Posted

技术标签:

【中文标题】如何在 magnolia CMS 中配置自定义 servlet【英文标题】:How to configure custom servlet in magnolia CMS 【发布时间】:2014-05-28 05:08:37 【问题描述】:
I am trying to do registration example in magnolia. I have a registration form, on submission of form control should be transferred to my own written servlet.

snippet for form :

   <body>
        <form action="./register" method="post">
            Name:<input type="text" name="name"><br />
             Email Id:<input type="text" name="email"><br/>
             <input type="submit"   value="Register">
        </form>
    </body>

注册servlet类:

public class Registration extends HttpServlet 

    /**
     * 
     */
    private static final long serialVersionUID = 1L;

    @Override
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException 
        // TODO Auto-generated method stub
        System.out.println("This is registration servlet");
    


我已经配置了模块描述符:

<servlets>
  <servlet>
    <name>RegistrationServlet</name>
    <class>com.rbt.registration.Registration</class>
    <comment>registration servlet</comment>
    <mappings>
      <mapping>/register</mapping>
    </mappings>
  </servlet>
</servlets>

我还配置了模板定义。 但是当我点击提交按钮时。它显示找不到资源的错误。 请帮帮我。

【问题讨论】:

【参考方案1】:

在您的模板中,在为表单编写 html 时,您还可以使用action="$ctx.contextPath/register" 将表单响应定向到 servlet 正在侦听的 uri。 另外请转到config:/server/filters/servlets/ 并验证RegistrationServlet 是否正确添加到那里。 Magnolia Forum

也讨论了同样的问题(尽管针对不同的 servlet)

HTH,一月

【讨论】:

【参考方案2】:

您在模块描述符中配置的映射将与您的上下文路径相关。例如。如果您的基本 url 是 @987654321@('public' 是您的上下文路径),那么您的 servlet 将响应 @987654322@

检查该 url 是否与您的表单提交到的 url 匹配。 action="./register" 是相对路径,将取决于包含表单的页面的路径。

【讨论】:

以上是关于如何在 magnolia CMS 中配置自定义 servlet的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia CMS 中自定义内容类型的链接

在 Magnolia CMS 中注册自定义 VirtualUriMapper

自定义操作实施 Magnolia CMS

如何在 Magnolia CMS Marketing Tag 中登录用户 ID

在 Magnolia CMS 中添加自定义图标

获取 magnolia cms 中执行的自定义操作的节点名称