• 카테고리

    질문 & 답변
  • 세부 분야

    백엔드

  • 해결 여부

    미해결

자꾸 질문을 드리게 되네요....

20.05.28 02:09 작성 조회수 170

0

안녕하세요?? 김영한 님

다름이 아니라 웹 계층 개발에서 상품 등록 시

상품등록 form 페이지에서 기존에 회원 가입 폼에서처럼

<form th:action="/items/news" th:object="${form}" method="post">

라고 하면 오류가 납니다.

<form th:action="@{/items/news}" th:object="${form}" method="post">

action을 바꾸어 주면 정상적으로 실행이 되는데 그 이유는 무엇인가요?

왜 회원등록에서는 @{member/new}로 안 해 주어도 회원등록이 되는데

상품등록에서는 오류가 나는지 정말 궁금합니다.

답변 부탁 드립니다. 감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요. 임정훈님^^

회원등록시에는 다음과 같이 순수한 html form을 사용합니다.

<form role="form" action="/members/new" ...>

반면에 상품등록에서는 thymeleaf라는 뷰템플릿이 제공하는 방식으로 form을 사용합니다. 여기에 붙는 th: 가 바로 thymeleaf가 제공하는 문법입니다.

<form th:action="@{/items/new}" th:object="${form}" method="post">

thymeleaf는 url을 표현할 때 @{url} 표현식을 사용해야 합니다. 그래서 그냥 적으면 문법 오류가 발생합니다.

이런 뷰템플릿을 이용하면 최종은 순수한 html로 변환되어서 고객에게 전달됩니다. 회원등록과 상품등록의 코드를 비교해보면 알겠지만 확실히 뷰템플릿을 활용하는 것이 더 많은 이점이 있습니다^^

타임리프 @{url} 문법은 다음 링크를 참고해주세요.

https://www.thymeleaf.org/doc/articles/standardurlsyntax.html

감사합니다.