SMALL
Form에서 CheckBox 내용을 컨트롤러로 받을 때 몇가지 주의사항이 있다.
checkBox의 내용이 겹치지 않는 것을 감안하여 Set<String>을 사용했는데 제대로 동작하지 않았다.
찾아보니 checkBox의 모든 내용을 가져오기 위해서는 List<String> 형태로 가져와야 한다.
Ajax에서 Controller로 넘겨줄 때에도 script 문법에서 Array를 사용하여 배열로 생성해주고, 배열값을 넘겨준다.
그래서 Controller에서 @ReuqestMapping 어노테이션을 사용하여 받을 때에도 '변수이름[]'형태로 받는다.
참고 코드
Ajax
function checkForm() {
var genreArray = new Array();
$('input:checkbox[name=genre]:checked').each(function() {
genreArray.push(this.value);
});
//other code
}
Controller
public Map<String, Object> insert(
@RequestParam("genreArray[]") List<String> genreArray) throws Exception {
Iterator<String> it = genreArray.iterator();
//DB <- Genre processing
//conrtollerprocessing
}
SMALL
'기록 > Web' 카테고리의 다른 글
[IntelliJ] application.properties 과 application.yml의 차이 (0) | 2021.08.03 |
---|---|
[Spring Security] There is no Password Encoder mapped for the id "null" 오류 (0) | 2021.05.06 |
[Spring] @RequestBody와 @ResponseBody (0) | 2021.05.06 |
[Spring Security] CSRF 취약점 (2) | 2021.05.06 |
[Spring] [xX][mM][lL]"과 일치하는 처리 명령 대상은 허용되지 않습니다. (0) | 2021.04.06 |