본문 바로가기
Dev/SpringBoot

26. [springboot] Thymeleaf 값 전달방법 기초(짱쉬움)

by VIPeveloper 2020. 11. 4.
반응형

1. 서론

- 한번쯤은 짚고 넘어가볼 만한 html에서 controller로 정보를 넘기는 상황에 대해 정리하고 싶었습니다.

- 이 포스팅을 통해 th:value, th:name 에 대하여 이해할 수 있습니다.

2. 본론

- hidden 값을 이용해 controller 에 값을 전달하고 싶었습니다. 애초에 다른 controller에서 값을 내려줄 때, 저는 model.addAttribute를 통해 키, 벨류를 이용하여 값을 내려주는 과정은 이해하고 있었습니다.

model.addAttribute("userId",1);
<input type="hidden" th:value="${userId}"/>

- 이제 이 값은 th:value에 담기게 됩니다. ${} 문법이 여기에서 중요한데, ${}를 쓰지 않으면 value는 문자 그대로의 userId가 되게 됩니다.

${}를 사용하게 되면 1이 담기게 됩니다.

- 이제 이 1을 controller에 넘겨주기 위해서는 어떻게 해야할까요?

<input type="hidden" th:name="test" th:value="${userId}"/>

- th:name=""을 이용하시면 됩니다. th:value에 담겨있는 값을 th:name을 키값으로 해서 전달이 되는 것이라고 할 수 있습니다.

    @PostMapping("/permit")
    public String permit_policy_page(PolicyDto dto,String userId){    // userId => firstPageId
        Long firstPageId = Long.parseLong(userId);
        ....
	}

다만, 이런 방식은 컨트롤러에서 Long 타입이 아닌, String으로밖에 받지 못합니다.

조금 더 세련된 방식으로는 @RequestParam을 이용하는 방법이 있습니다.

    @PostMapping("/permit")
    public String permit_policy_page(PolicyDto dto,@RequestParam("userId") Long firstPageId){    // userId => firstPageId
//        Long firstPageId = Long.parseLong(userId);
	...
    }

th:name값을 받아서 바로 Long 타입으로 변환할 수 있습니다.

 

3. 결론

- th:value 값이 th:name이라는 키값으로 매핑되어 컨트롤러에 전달되고, 이를 String으로 받거나, @RequestParam으로 받아 처리하는 방법에 대해 포스팅해보았습니다.

반응형