1

ShippingDetailsS​​ervlet.java というサーブレット呼び出しを作成してデプロイしました。HTMLフォームを送信する必要があります。フォーム アクションにどのパスを配置すればよいかわかりません。以下がフォームです。

<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" />

サーブレットに送信できるようにするには、フォーム アクションにどのパスを指定すればよいか教えてください。

以下はサーブレットです。

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");
    }
}
4

3 に答える 3

0

forums.adobe.comから私の質問への回答を得ました

答えは以下の通りです。

次のようにサーブレットに注釈を付けた場合:

@SlingServlet(methods = { "POST" }, paths = "/apps/mycompany/servlets/GenericServlet")

フォームは、パスと同じ URL に投稿する必要があります。つまり、"/apps/mycompany/servlets/GenericServlet"

したがって、サーブレットの「パス」行をフォームに変更すると"/services/mycompany/ShippingDetailsServlet" 、そのフォームに投稿されます。

于 2013-09-30T03:02:58.623 に答える