首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向Servlet CQ5提交表单

向Servlet CQ5提交表单
EN

Stack Overflow用户
提问于 2013-09-27 06:55:29
回答 3查看 5.6K关注 0票数 1

我创建了一个Servlet调用ShippingDetailsServlet.java并进行了部署。我需要向它提交一个HTML表单。我不知道我应该在形式上采取什么行动。下面是表格。

代码语言:javascript
复制
<form action="/services/mycompany/ShippingDetailsServlet" method="post">
Country: <input type="text" name="country" value="au"><br>
Quantity: <input type="text" name="quantity" value="1">
<cq:include path="./submit" resourceType="foundation/components/form/submit" />

请让我知道应该为表单操作提供什么路径,以便将其提交到Servlet。

下面是Servlet。

代码语言:javascript
复制
package mycompany.servlets;

import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.sling.SlingServlet;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
import org.apache.sling.api.servlets.SlingAllMethodsServlet;

import javax.servlet.ServletException;
import java.io.IOException;
import java.io.PrintWriter;

@SlingServlet(
        paths={"/services/mycompany/"}
)
@Properties({
        @Property(name="service.pid", value="mycompany.ShippingDetailsServlet",propertyPrivate=false),
        @Property(name="service.description",value="Shipping details servlet", propertyPrivate=false),
        @Property(name="service.vendor",value="mycompany", propertyPrivate=false)
})
public class ShippingDetailsServlet extends SlingAllMethodsServlet
{
    @Override
    protected void doGet(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException
    {
        //Do something fun here
    }

    @Override
    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException
    {
        //Do something fun here
        PrintWriter out = response.getWriter();
        out.println("Hello");
    }
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-09-30 03:02:58

forums.adobe.com那里得到了我问题的答案

答案如下。

如果您对servlet进行了如下注释:

代码语言:javascript
复制
@SlingServlet(methods = { "POST" }, paths = "/apps/mycompany/servlets/GenericServlet")

表单应该与路径中的url相同,即"/apps/mycompany/servlets/GenericServlet"

因此,如果要将servlet中的“路径”行更改为"/services/mycompany/ShippingDetailsServlet",表单将发布到该行。

票数 0
EN

Stack Overflow用户

发布于 2013-09-27 08:35:33

默认情况下,servlet只能部署在/bin路径下面。不要将尾随的/放在路径上,也不要添加任何附加属性。例如:使用以下注释:

代码语言:javascript
复制
@SlingServlet(paths={"/bin/services/mycompany"})
public class ShippingDetailsServlet extends SlingAllMethodsServlet

表单中的路径应该与@SlingServlet中相同

代码语言:javascript
复制
<form action="/bin/services/mycompany" method="post">

如果您确实希望在/bin之外创建servlet,则需要在Execution Paths控制台的Apache Sling Servlet/Script Resolver and Error Handler配置页面中添加适当的路径。

票数 0
EN

Stack Overflow用户

发布于 2013-09-27 13:29:13

这不一定是真的。您可以在自定义路径上部署Servlet,但要做到这一点,您需要修改"Apache Servlet/Script Resolver和Error Handler“,并将自定义路径添加到”执行路径“部分。

此外,如果要将此表单部署到您的发布实例中,您可能希望使用/bin/以外的自定义路径,因为CQ有许多通过/bin注册的管理servlet,并且向公众公开它们可能会带来安全问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19044506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档