@RequestParam 어노테이션은 단일 파라메터를 전달받을 때 사용하는 어노테이션이다.
사용방법은 아래와 같이 쓰며, 활용하고자 하는 메서드의 파라메터값으로 @RequestParam을 넣어주면 된다.
@RequestParam("가져 올 데이터의 이름") [데이터타입] [가져 온 데이터를 담을 변수명] |
[간단정리 끝]
============================================================================
오늘 View에서 Controller URL을 호출했는데 다음과 같은 에러가 떴다.
정리하는 김에 다음 에러 해결방법과 @RequestParam을 정리해보려 한다.
우선 위와 같은 상황이 왜 발생하였느냐? 소스를 보면 다음과 같다.
소스만 보면 아무 문제도 없다. 그냥 message라는 파라메터를 String타입의 message라는 변수에 담아
콘솔에 찍어주고 있다. 원래 잘 작동하던 녀석인데 다른 곳을 고치면서 에러가 발생하였다.
아래와 같은 두 메서드가 있다고 하자.
1. message데이터를 넘겨줌
2. message데이터를 넘겨주지 않음.
원래는 @RequestParam을 사용하지 않는 Controller였는데 갑자기 아래 그림처럼 받아야 하는 경우가 생긴것이다.
여기서 문제가 발생하는데, message라는 데이터를 받으려고
@RequestParam을 사용하니, message라는 데이터를 넘기면 제대로 실행이 되는데
message라는 데이터를 넘기지 않으면 400번에러가 발생하는 것이다.
왜냐하면 @RequestParam는 선언을 하는 순간 Default가 데이터가 반드시 필수 이기 때문이다.
그럼 이 Default를 바꿔주면 간단히 해결된다. message라는 데이터가 필수가 아니게 되는것이다!!
다음과 같이 바꿔주겠다.
이렇게 하면 message라는 값은 필수값이 아니게 되기 때문에 message라는 데이터를 보내지 않아도 정상적으로
실행이 된다.
이렇게 @RequestParam값이 있든 없든 메서드는 제대로 실행이 된다. 물론 데이터가 없으니 null값이 뜨지만..
'JAVA' 카테고리의 다른 글
[JAVA] redirect시 파라메터 담아서 보내기 ( feat. addAttribute, addFalshAttribute ) (0) | 2022.02.01 |
---|---|
[JAVA] org.springframework.web.multipart.MultipartException 에러 (maxPostSize) (0) | 2022.01.29 |
[JAVA] Spring을 이용하여 파일 업로드를 해보자. (1) ( feat Vue.js , axios ) (0) | 2022.01.29 |
[JAVA] @Scheduled - 스케줄러 사용법 (0) | 2022.01.11 |
[JAVA] JAVA 설치하기 (0) | 2022.01.08 |