Spark POST返回404看似没有任意发现

时间:2017-09-22 17:34:54

标签: javascript java post http-status-code-404

Spark最近表现得很奇怪。我有一个按钮,当点击它时调用带有一些查询参数的POST方法:

post("/test", (request, response) -> {

    model.put("reason", "some reason here");
    ...

    LOG.info("Returning from /test with reason: " + model.get("reason")); 
    // the above line always executes and always prints the correct output (never 404)

    return new ModelAndView(model, "test.vtl");
}, new VelocityTemplateEngine());

文件test.vtl仅包含以下内容:$reason (在下面的JS代码中用于显示reason地图中model键内容的提醒。

JS相关代码:

xmlHttp.open("POST", "/test", true);
xmlHttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

var params = "file=" + file + "&searchStr=" + searchStr;

xmlHttp.onreadystatechange = function() {
    if (xmlHttp.readyState == XMLHttpRequest.DONE) {
        alert(xmlHttp.responseText);
    }
}
xmlHttp.send(params);

当我点击它时,有时它会完美地工作,当我再次点击时,我得到一个404 Not Found with:

  

MatcherFilter:152 - 请求的路径[/ test]尚未映射到Spark

这发生在几秒钟内。我点击 - 它有效 - 如果失败我再次点击 - 再次失败 - 再次失败 - 再次突然成功......

怎么可能?

P.S。我已登录post请求,因此我知道Spark实际上正在访问它。但它并没有从它返回。这可能与里面的 {/ 1>}突然提升404(我不会从中访问其他页面)有关。

1 个答案:

答案 0 :(得分:0)

似乎有2个可能的答案(为什么他们解决的是另一个问题):

  1. 添加Thread.sleep(250); // or even lower
  2. 将请求更改为GET
  3. 我找不到这些任意失败的根本原因,但最终选择了#2选项。