【问题标题】:Vertx : Post data from html to JavaVertx:将数据从 html 发布到 Java
【发布时间】:2016-04-30 11:21:53
【问题描述】:

我尝试将 HTML 表单数据发送到 Java Vertx Verticle,但我得到了 null 作为值。

这是我的代码:

public void start(Future<Void> startFuture) throws Exception {
  Router router = Router.router(vertx);

  router.route("/html/*").handler(StaticHandler.create().setWebRoot("html/"));
  router.route("/html/*").handler(StaticHandler.create().setWebRoot("web/html"));
  router.route("/js/*").handler(StaticHandler.create().setWebRoot("web/js"));
  router.route("/css/*").handler(StaticHandler.create().setWebRoot("web/css"));
  router.route("/fonts/*").handler(StaticHandler.create().setWebRoot("web/fonts"));

  Route route = router.route(HttpMethod.POST, "/crypt/testForm/");
  route.handler(routingContext -> {
    String productType = routingContext.request().getParam("test");
    System.out.println(productType);
  });

  vertx.createHttpServer()
    .requestHandler(router::accept)
    .listen(8085, "localhost", res -> {                    
      if (res.succeeded()) {
        startFuture.complete();    
      } else {
        startFuture.fail(res.cause());
      }
  });
}

对于我的 html 文件:

<form action="/crypt/testForm" method="post">
  <input type ="text" id="test" name ="test"/>
  <input type="submit"/>
</form>

问候。

【问题讨论】:

  • 有一个simple example 与您的类似用例。也许这会有所帮助。
  • 谢谢@alexvetter 我忘记添加router.route().handler(BodyHandler.create());
  • 您应该考虑添加一个答案并将其标记为您问题的正确答案。

标签: vert.x


【解决方案1】:

这是我的解决方案,也许有帮助,

      public void start() throws Exception {

    Router router = Router.router(vertx);  
    router.route("/html/*").handler(StaticHandler.create().setWebRoot("html/"));    
    router.route("/html/*").handler(StaticHandler.create().setWebRoot("web/html"));
    router.route("/js/*").handler(StaticHandler.create().setWebRoot("web/js"));
    router.route("/css/*").handler(StaticHandler.create().setWebRoot("web/css"));
    router.route("/fonts/*").handler(StaticHandler.create().setWebRoot("web/fonts"));
    router.route("/crypt/test").handler(BodyHandler.create());
    router.post("/crypt/test").handler(ctx -> {
          ctx.response().putHeader(HttpHeaders.CONTENT_TYPE, "text/plain");
          JsonArray js = new JsonArray();
          js.add(1);
          js.add(5);
          js.add(3);
          ctx.response().end(js.toString());
    });

    vertx.createHttpServer().requestHandler(router::accept).listen(8085);
  }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-22
    • 2016-12-02
    • 2011-12-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多