작성
·
24
0
선생님 안녕하세요
action의 의미는 입력값을 해당 서버(item.html)로 보내는 것인데 이것의 필요성을 모르겠어서 질문드려봅니다.
두 번째 코드의 return 값을 기존 "redirect:/form/items/{itemId}"에서 "/form/items"으로 바꿔도 문제 없이 동작해서 질문 드려 봅니다.
<form action="item.html" th:action th:object="${item}" method="post">
@PostMapping("/add")
public String addItem(@ModelAttribute Item item, RedirectAttributes redirectAttributes,
Model model) {
log.info("item.open={}", item.getOpen());
log.info("item.regions={}", item.getRegions());
log.info("item.itemType={}", item.getItemType());
Item savedItem = itemRepository.save(item);
redirectAttributes.addAttribute("itemId", savedItem.getId());
redirectAttributes.addAttribute("status", true);
//return "redirect:/form/items/{itemId}";
model.addAttribute("items", itemRepository.findAll());
return "/form/items";
}
답변 1
0
안녕하세요. 냐암2님, 공식 서포터즈 y2gcoder입니다.
html form 태그의 action 은 html 에서 해당 폼 데이터를 보낼 서버의 URL을 말합니다 🙂. 그리고 위와 같이 action의 값을 명시적으로 적지 않는다면 해당 폼 데이터를 입력하고 있는 URL과 동일한 URL로 폼데이터를 보내게 됩니다.(HTTP Method는 POST라고 되어있고 후에 첨부해주신 코드를 보니 정확하게는 POST /add 로 이동할 것 같습니다!)
그리고 테스트를 위해 변경해주신 코드는 이미 도착한 서버 내에서의 반환부입니다. action을 테스트하기 위해서는 th:action 값에 다른 값을 추가해서 테스트해보시겠습니까?
그리고 해당 부분을 이해하기 위해서는
HTML form 의 action
Redirect, 그리고 단순 View 반환의 차이(이 부분은 본 강의를 다시 복습해보시면 좋을 것 같습니다!)
를 한 번 학습해보시면 좋을 것 같습니다 🙂
감사합니다.
감사합니다
해당 부분 좀 더 공부해보겠습니다!