0

我正在尝试创建一个使用 sling servlet 处理的简单 html 表单。这是一个非常基本的表单,有几个输入字段,我的 java 类非常简单。我要做的就是在我的错误日志中记录表单中的值。相反,什么都没有发生。我一定是错过了一些小东西,或者只是完全失明。

表单html

<form name="" method="POST" action="/apps/form">
 <input id="firstName" type="text" name="firstName" />
 <input id="phoneNumber" type="text" name="phoneNumber" />          
 <input type="submit" name="submit" value="submit">
</form>

Java 类

@Component(immediate=true, metatype=false, label="FORM SERVLET")

@Properties({
@Property(name="sling.servlet.methods", value={"POST"}),
@Property(name="sling.servlet.paths", value={"/apps/form"}),
@Property(name="sling.servlet.selectors", value={"form"}),
@Property(name="sling.servlet.extensions", value={"html"})
})

public class FormServlet extends SlingSafeMethodsServlet {

    private final Logger log = LoggerFactory.getLogger(this.getClass().getName());

    protected void doPost(SlingHttpServletRequest request, SlingHttpServletResponse response) throws ServletException, IOException
    {

    response.setContentType("text/html");
    PrintWriter out = response.getWriter();

    String name = request.getParameter("firstName");
    String phone = request.getParameter("phoneNumber");

    out.println(name);
    out.println(phone);

log.error("the chat component is loaded first name" + name + phone);

}

}

4

2 回答 2

1

您可以将 servlet 注册到特定路径,在这种情况下,扩展和选择器无关紧要。通常你在 /bin 目录下注册路径

如果 /apps/form 存在,您应该注册您的 servlet 以响应该资源类型而不是路径。例如:

@SlingServlet(
    description = "processes a form",
    resourceTypes = { "yourapp/component" },
    selectors = { "form" },
    extensions = { "html" },
    methods = { "POST" })
public class FormServlet extends SlingAllMethodsServlet { ... }
于 2013-05-07T12:47:42.530 回答
0

您是否可以 通过在浏览器中输入来访问http://yourmachine.com/apps/form以确保您的 Servelet 正常

then try passing the parmeter on the URL itself http://localhost/apps/form?firstName="anish"&phoneNumber="22222222222"

如果一切顺利,那么您的 serverlet 就可以

然后你必须弄清楚视图启用 Firefox/chrome 开发工具来找出 URL 的去向

希望能帮助到你

于 2013-05-07T06:15:56.733 回答