Thymeleaf로 PUT할 때 hidden형을 사용하고 있다

4389 단어 자바Thymeleaf

Thymeleaf로 PUT할 때는 단순히 form 메소드의 action에 PUT를 지정하고 있는 것은 아니다.



조사한 경위



PUT 할 수 있도록 구현했는데 chrome의 developer 콘솔에서 Request Method를 보았는데 POST 되었기 때문에. .



From Data를 보면 put이 되어 있다.


Thymeleaf 소스가 어떻게 배포되는지 살펴보기



form 태그의 action에는 post 를 지정한 다음 hidden형을 사용하여 put을 실현하고 있는 것이 소스를 보면 알 수 있다.
・hidden형이란
htps : //로 ゔぇぺぺr. 모잖아. 오 rg / 자 / 도 cs / u b / HTML / 에멘 t / amp t / 히든
원래 양식에 표시하지 않고 값을 제출하고 싶을 때 등에 사용하는 것.
  • Thymeleaf 코드

  • sample.html
    <!DOCTYPE html>
    <html xmlns:th="http://www.thymeleaf.org">
      <head>
        <meta http-equiv='Content-type' content='text/html; charset=utf-8' />
        <title>test</title>
      </head>
      <body>
    <!-- ここに注目 -->
        <form th:action="@{/user}" th:method="put">
          <input class="btn btn-default btn-xs" type="submit" value="更新" />
        </form>
    <!-- ここに注目 -->
      </body>
    </html>
    
  • 화면에 표시된 소스 코드 (thymeleaf 배포 후)

  • sample.html
    <!DOCTYPE html>
    <html>
      <head>
        <meta http-equiv='Content-type' content='text/html; charset=utf-8' />
        <title>test</title>
      </head>
      <body>
    <!-- ここに注目 -->
        <form action="/user" method="post">
          <input type="hidden" name="_method" value="put"/>
          <input class="btn btn-default btn-xs" type="submit" value="更新" />
        </form>
    <!-- ここに注目 -->
      </body>
    </html>
    

    이유



    form 태그는, getpost 메소드 밖에 서포트하고 있지 않다.
    그 때문에, form 태그상은 method="post" 를 지정해, hidden형으로 value="put" 를 지정하는 방법을 취하고 있다고 생각된다.
    결과적으로 Request Method는 POST 하지만 _method 로 지정한 메소드로 송신되기 때문에 PUT 로 송신된다. 조사해 보면 다른 Rails등의 프레임워크에서도 이런 방법으로 put을 실현하고 있는 것 같다.

    좋은 웹페이지 즐겨찾기