2017-04-11 6 views
0

私がコーディングしているサイトにファイルをアップロードするためのフォームがあります。 http://localhost:8080/uploadRevision/ {docId} URL http://localhost:8080/uploadRevisionLandingに誘導されてから、userDashboardにリダイレクトされます。Spring IO POSTフォームが間違ったURLにリダイレクトされています - Thymeleaf

しかし、フォームを送信すると、http://localhost:8080/uploadRevision/uploadRevisionLandingになりますので、ルートから移動するのではなくURLにappend/uploadRevisionLandingします(これは正しい用語ではない場合はごめんなさい)。

私は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> 

マイContoller方法私が先行する "/"

せずに、両方のURL文字列を返す試みたコントローラメソッドで

@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"); } 

答えて

1

解決済み! th:action="@{uploadRevisionLanding}"th:action="@{/uploadRevisionLanding}"とし、その前に "/"を付けてサーバールートとの相対的なコンテキストにする必要がありました。それは私が混乱していたものとは若干異なる別のページでそれなしで働いた。

関連する問題