2주차 과제

오정빈·2025년 9월 8일

내일배움캠프

목록 보기
6/22

2025 09 08 스파르타 코딩클럽 6일차

오늘은 2주차 과제를 2개 진행했고, 진행하면서 발생한 에러 정리와 해결한 방법을 공유한다.


1. JSP 표현식 오류 (400 Bad Request)

문제: form.html에서 JSP 표현식 <%= request.getContextPath() %>을 사용하여 400 Bad Request 에러 발생

원인: Thymeleaf 템플릿에서 JSP 표현식을 사용할 수 없음

해결 방법:

<!-- 수정 전 -->
<form
  method="post"
  action="<%= request.getContextPath() %>/intro"
  accept-charset="UTF-8"
>
  <!-- 수정 후 -->
  <form method="post" th:action="@{/profile}" accept-charset="UTF-8"></form>
</form>

2. 폼 데이터 전달 오류 (500 Internal Server Error)

문제: 폼 제출 후 데이터가 결과 페이지에 표시되지 않음

원인:

  • Person 클래스의 필드명과 폼의 name 속성이 일치하지 않음
  • 컨트롤러에서 Model에 데이터를 제대로 전달하지 않음

해결 방법:

  1. Person 클래스에 foods 필드 추가:
public class Person {
    private String name;
    private Integer age;
    private String mbti;
    private String foods;  // 추가
    // getter/setter 추가
}
  1. 컨트롤러에서 데이터 처리:
@PostMapping("/profile")
public String submit(@ModelAttribute("form") Person form, Model model) {
    // 개별 데이터를 Model에 추가
    model.addAttribute("name", form.getName());
    model.addAttribute("age", form.getAge());
    model.addAttribute("mbti", form.getMbti());

    // foods 문자열을 배열로 변환
    String foodsString = form.getFoods();
    if (foodsString != null && !foodsString.trim().isEmpty()) {
        String[] foodsArray = foodsString.split(",");
        for (int i = 0; i < foodsArray.length; i++) {
            foodsArray[i] = foodsArray[i].trim();
        }
        model.addAttribute("foods", foodsArray);
    } else {
        model.addAttribute("foods", new String[0]);
    }

    return "result";
}

3. Thymeleaf 조건문 오류 (500 Internal Server Error)

문제: result.html에서 foods.empty 속성 사용으로 인한 오류

원인: Java 배열에는 empty 속성이 없음

해결 방법:

<!-- 수정 전 -->
<ul th:if="${foods != null and !foods.empty}">
  <!-- 수정 후 -->
  <ul th:if="${foods != null and #lists.size(foods) > 0}"></ul>
</ul>

4. 사용하지 않는 의존성 주입 오류

문제: MbtiEmojiService를 @Autowired로 주입받았지만 사용하지 않아 잠재적 오류 가능성

해결 방법:

// 주석 처리
// @Autowired
// private MbtiEmojiService mbtiEmojiService;

0개의 댓글