【问题标题】:Spring IO POST form is redirecting to the wrong URL - ThymeleafSpring IO POST 表单重定向到错误的 URL - Thymeleaf
【发布时间】:2017-09-07 04:05:04
【问题描述】:

我有一个用于在我正在编码的网站上上传文件的表单。从 URL http://localhost:8080/uploadRevision/{docId} 它应该指向 URL http://localhost:8080/uploadRevisionLanding,然后重定向回 userDashboard。

但是,当我提交表单时,它会将我带到 http://localhost:8080/uploadRevision/uploadRevisionLanding,因此它会将 /uploadRevisionLanding 附加到 URL,而不是从根目录开始(抱歉,如果这不是正确的术语)。

我正在使用 SpringIO 和 Thymeleaf,并且我编写了其他代码以类似的方式工作。

我的表格

<form name="upload" action="/" th:action="@{uploadRevisionLanding}" th:object="${document}" method="POST" enctype="multipart/form-data">
<div class="container">
    <br />
    <div class="row">
        <div class="col-md-12">
            <div class="panel panel-default">
                <div class="panel-heading">
                    <strong>Upload files</strong> <small>
                </small>
                </div>
                <div class="panel-body">

                    <label class="control-label" >Title:</label>
                    <label class = "docTitle" th:text="${document.title}" />
                    <label class="control-label">Select File:</label>

                    <input id="input-2" type="file" name="file" class="file"/>
                    <button type="button" class="btn btn-default file-preview-clear" value="Reset">
                        <span class="glyphicon glyphicon-remove"></span>
                        Clear </button>
                    <!-- file-preview-input -->
                    <button type="submit" class="btn btn-labeled btn-primary" value="Submit">
                            <span class="btn-label"><i class="glyphicon glyphicon-upload"></i>
                        </span> Upload </button>
                    <input type="hidden"
                           name="${_csrf.parameterName}"
                           value="${_csrf.token}"/>
                </div>
            </div>
        </div>
    </div>
</div>

我的控制器方法

@GetMapping("/uploadRevision/{docId}")
public String uploadRevision(Model model, @PathVariable("docId") long docId) {
    /* Do something */
    return "/uploadRevision";
}

@PostMapping("/uploadRevisionLanding")
public RedirectView handleRevisionUpload (@RequestParam("file") MultipartFile file,
                                          RedirectAttributes redirectAttributes,
                                          @ModelAttribute Document document) {
    /* Load logged user */

     /* Set branch for file */

    return new RedirectView("/uploadRevisionLanding");
}

@GetMapping("/uploadRevisionLanding")
public ModelAndView uploadRevisionLanding() { return new ModelAndView("userDashboard"); }

在控制器方法中,我尝试返回带有和不带有前面“/”的 URL 字符串

【问题讨论】:

    标签: java html spring forms spring-mvc


    【解决方案1】:

    解决了!我需要将th:action="@{uploadRevisionLanding}" 设置为th:action="@{/uploadRevisionLanding}",并带有前面的“/”,以便它与服务器根目录相关。没有它,它在另一个稍微不同的页面上也能工作,这让我很困惑。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-29
      • 2014-09-21
      • 1970-01-01
      • 2018-06-09
      • 1970-01-01
      • 2019-10-14
      • 2023-03-29
      • 1970-01-01
      相关资源
      最近更新 更多