我正在尝试创建一个使用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 Class
@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);
}
}
答案 0 :(得分:1)
您可以将servlet注册到特定路径,在这种情况下,扩展和选择器是无关紧要的。通常你在/ bin目录下注册路径
如果/ apps / form存在,您应该注册您的servlet以响应该resourceType而不是路径。例如:
@SlingServlet(
description = "processes a form",
resourceTypes = { "yourapp/component" },
selectors = { "form" },
extensions = { "html" },
methods = { "POST" })
public class FormServlet extends SlingAllMethodsServlet { ... }
答案 1 :(得分:0)
您是否可以通过在浏览器中输入http://yourmachine.com/apps/form来确保您的Servelet正常
then try passing the parmeter on the URL itself http://localhost/apps/form?firstName="anish"&phoneNumber="22222222222"
如果一切顺利,那么您的服务器确定
然后你必须找出视图启用Firefox / chrome开发人员工具来确定URL的去向
希望有所帮助