Spring의 Controller에서 @RequestParam 어노테이션을 이용하면 Http 요청의 데이터를 메소드의 파라미터로 받을 수 있다. html 태그에 name으로 지정한 값으로 매칭되는 방식이다. 이 외에도 파라미터 맵핑 방식에는 @RequestHeader @RequestBody 등이 있다.


Example

input 태그의 name 속성을 payment_participant_list으로 지정하고 Controller에서 값을 넘겨 받을 파라미터에 @RequestParam 어노테이션을 지정해줘서 사용하는 예시이다.

<form class="modal-content" th:action="@{'/meetings/' + ${meeting.id} + '/payment'}" method="post">
    ...
    <input th:each="participant : ${payment_participant_list}" type="checkbox" name="payment_participant_list" th:value="${participant.ssoId}" th:text="${participant.name}" checked="checked"/>
@PostMapping(value = "/{id}/payment/{paymentId}/update")
public String updatePayment(@PathVariable int id,@PathVariable int paymentId, Payment payment, User payer, @RequestParam List<User> payment_participant_list) {
    System.out.println(payment_participant_list);
}


Error

Controller에 파라미터 @RequestParam와 같은 맵핑 방식을 지정하지 않고 실행하면 아래와 같은 에러가 발생한다.

Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue May 30 23:40:29 PWT 2017
There was an unexpected error (type=Internal Server Error, status=500).
Failed to instantiate [java.util.List]: Specified class is an interface
org.springframework.beans.BeanInstantiationException: Failed to instantiate [java.util.List]: Specified class is an interface
	at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:99)
    ....

SpringBoot Gmail SMTP를 이용한 메일 보내기

SpringBoot에서 메일 보내는 기능을 구현하기 위해 ‘SpringBoot SMTP’, ‘SpringBoot 메일 보내기’ 등으로 검색을 해보면 다양하고 복잡한 자료들이 나온다. 이 포스트에서는 SpringBoot 프로젝트에서 JavaMa...… Continue reading