본문 바로가기
개발아닌개발/springboot

타임리프(thymeleaf) 라디오 버튼의 초기값 설정하기

by 불청객 2022. 1. 12.
반응형

Spring Tool Suite 4

 

 

addAttribute을 이용하여 타임리프로 html에 변수를 전달하고, 전달된 변수에 따라 라디오 버튼의 초기값을 설정하는 코드이다.

 

 

th:if 도 써보고 #string. 등 다양한거 써봤지만

드디어 헤매다 성공

 

HTML의 mode == 'Atest' 와 같은 코드일때는 라디오버튼이 다 참이였음 (라디오 특성상 체크는 1곳만이라 마지막 라디오버튼이 체크됨)

mode.toString() 으로 아무튼해결

 

코드가 환경에 따라서도 많이 바뀌려나 다른사람들도 되는 코드를 올렸을텐데 나는 왜 안되었는지는 모르겠음.

 

 

 

 

Contorller.java

  • "mode"에 값을 전달한다.
  • settingConfig.getMode()는 내가 전달할 값(Atest or Btest)
	@GetMapping("/setting")
	public String setting(Model model) {
		model.addAttribute("mode", settingConfig.getMode());
		return "setting";
	}

 

setting.html

  • th:attr : 속성 추가하기
  • 컨트롤러에서 "mode"로 전달하였으니 String문법을 이용하여 문자열을 비교(toString())
  • 삼항연산자를 사용하여 전달된 값에 따라 라디오 checked 설정
  • name="mode" 를 설정한건 라디오버튼 특징 상, 둘다 선택되지 않게 하기위해서는 라디오버튼을 하나의 name으로 묶어야함. (mode 대신 다른 용어를 써도 무방)
    name 속성 제거시, 라디오 버튼이 중복으로 check 됨.
<!doctype html>
<html lang="en" xmlns:th="https://www.thymeleaf.org">

<head>
.
.
</head>
<body>
	.
	.
	(생략)
	.
	.
    <div data-toggle="buttons" class="btn-group" role="group">
        <label class="btn mb-2 col-md-5 btn-light" style="">
            <input type="radio" name="mode" th:attr="checked=${mode.toString() == 'Atest' ? 'true' : 'false'}"  autocomplete="off">Atest
        </label>
        <label class="btn mb-2 col-md-5 btn-light" style="" >
            <input type="radio" name="mode" th:attr="checked=${mode.toString() == 'Btest' ? 'true' : 'false'}" autocomplete="off">Btest
        </label>
    </div>
</body>

 

 

 

th:attr=~~~ 만 적용하면 된다. 이제 설정된값 ajax로 컨트롤러에 넘기기해야겠다.

타임리프로 라디오버튼 Check 하기 끝

728x90
반응형

댓글