[Spring Boot] 13. 디버깅 (mustache)

김건우's avatar
Apr 01, 2025
[Spring Boot] 13. 디버깅 (mustache)

1. action="/store/{{model.id}}/update" 없으면

: 수정 요청이 서버로 전송되지 않음

문제 코드

<form method="POST">

발생하는 오류

  • action이 없으면 폼이 현재 페이지(update-form)로 제출됨.
  • 서버에서 POST /store/{id}/update를 처리하지 않으므로 상품 수정이 되지 않음.

오류 메시지

오류 메시지는 없지만, 폼이 현재 페이지로 제출되므로 수정이 반영되지 않음.

해결방법

<form action="/store/{{model.id}}/update" method="POST">

2. name="name", name="stock", name="price" 없으면

: 데이터가 서버로 전송되지 않음

문제 코드

<input type="text" value="{{model.name}}"><br> <input type="text" value="{{model.stock}}"><br> <input type="text" value="{{model.price}}"><br>

발생하는 오류

  • <input> 태그에 name 속성이 없으면, 브라우저가 입력 값을 서버로 전송하지 않음.
  • storeService.상품수정()에서 name, stock, price를 @RequestParam으로 받을 수 없음.

오류 메시지

org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter 'name' is not present

해결방법

<input type="text" value="{{model.name}}" name="name"><br> <input type="text" value="{{model.stock}}" name="stock"><br> <input type="text" value="{{model.price}}" name="price"><br>

3. method="POST" 삭제

: GET 요청이 되어 수정 불가능

문제 코드

<form action="/store/{{model.id}}/update">

발생하는 오류

  • method="POST"이 없으면 기본적으로 GET 요청이 됨.
  • 서버에서는 @PostMapping("/store/{id}/update")만 처리할 수 있기 때문에 405 Method Not Allowed 오류 발생.

오류 메시지

org.springframework.web.HttpRequestMethodNotSupportedException: Request method 'GET' is not supported

해결방법

<form action="/store/{{model.id}}/update" method="POST">

4. value="{{model.name}}", value="{{model.stock}}", value="{{model.price}}" 삭제

: 입력 필드가 비어 있음

문제 코드

<input type="text" name="name"><br> <input type="text" name="stock"><br> <input type="text" name="price"><br>

발생하는 오류

  • 기존 데이터(model.name, model.stock, model.price)가 <input>에 자동으로 채워지지 않음.
  • 사용자가 기존 값을 확인할 수 없고, 직접 다시 입력해야 함.

오류 메시지

오류 메시지는 없지만, 기존 데이터가 보이지 않음.

해결방법

<input type="text" value="{{model.name}}" name="name"><br> <input type="text" value="{{model.stock}}" name="stock"><br> <input type="text" value="{{model.price}}" name="price"><br>

5. <button type="submit"> 삭제

: 폼을 제출할 방법이 없음

문제 코드

<form action="/store/{{model.id}}/update" method="POST"> <input type="text" value="{{model.name}}" name="name"><br> <input type="text" value="{{model.stock}}" name="stock"><br> <input type="text" value="{{model.price}}" name="price"><br> </form>

발생하는 오류

  • button이 없으면 사용자가 폼을 제출할 수 없음.
  • 데이터가 전송되지 않아 상품 수정이 되지 않음.

오류 메시지

오류 메시지는 없지만, 기존 데이터가 보이지 않음.

해결방법

<button type="submit">상품수정</button>

6. {{model.id}} 삭제

: 수정할 상품의 ID를 서버로 전달하지 못함

문제 코드

<form action="/store/update" method="POST">

발생하는 오류

  • {{model.id}}가 없으면 /store/update로 요청이 가는데, @PostMapping("/store/{id}/update")를 처리할 수 없음.
  • 서버에서 ID를 찾을 수 없으므로 404 Not Found 또는 400 Bad Request 오류 발생.

오류 메시지

org.springframework.web.servlet.NoHandlerFoundException: No handler found for POST /store/update

해결방법

<form action="/store/{{model.id}}/update" method="POST">

7. {{> layout/header}} 삭제

: 페이지 레이아웃이 깨짐

문제 코드

<section> <form action="/store/{{model.id}}/update" method="POST"> <input type="text" value="{{model.name}}" name="name"><br> <input type="text" value="{{model.stock}}" name="stock"><br> <input type="text" value="{{model.price}}" name="price"><br> <button type="submit">상품수정</button> </form> </section>

발생하는 오류

  • {{> layout/header}}는 보통 공통적인 header.html 템플릿을 포함하는 역할을 함.
  • 이를 제거하면 네비게이션 바, 스타일, 공통 스크립트 등이 사라질 수 있음.

오류 메시지

오류 메시지는 없지만, 레이아웃이 깨짐.

해결방법

{{> layout/header}}

Share article

gunwoo