여러 체크박스 파라미터를 받아오자.

박병주·2023년 1월 26일
0

Spring

목록 보기
3/6

체크박스를 여러개 클릭했을때 여러 값을 받아오기 위해서는 어떻게 해야할까.

체크박스 속성 중 name값을 모두 다르게 준다면 받아 올 수 있겠지만, 여러 변수로 관리해야 하는 복잡함이 생긴다.

name 값을 모두 같게 하여 value값을 받아 올 수 있는 방법이 있다면, 다중 선택에 대한 해결책이 될 수 있을 것이다.

JSP

<form action="/practiceCheckbox" method="post">
<button>send</button>
    <table>
        <tr>
            <td>A<input type="checkbox" name="multiCheck" value="A" /></td>
            <td>B<input type="checkbox" name="multiCheck" value="B" /></td>
            <td>C<input type="checkbox" name="multiCheck" value="C" /></td>
            <td>D<input type="checkbox" name="multiCheck" value="D" /></td>
        </tr>
    </table>
</form>

form 태그로 매핑에 대한 정보와, POST 방식으로 파라미터를 넘겨주었다.
각각의 체크박스는 같은 name을 갖고 있고 value만 다르게 작성해 주었다.

Controller

컨트롤러 부분에서는 체크된 여러 값들에 대한 파라미터를 받아오는 것과 이 파라미터를 변수에 저장하여 확인하는 부분까지 다뤄보겠다.

@Controller
public class PracticeMultiParams {
    @RequestMapping(value = "/checkbox") 
    public String goCheckbox(){
        return "practice/checkbxParams";
    }
    @RequestMapping(value = { "/practiceCheckbox" }, method = RequestMethod.POST)
    public void practiceMultiParam(HttpServletRequest httpServletRequest){
        String[] multiValue = httpServletRequest.getParameterMap().get("multiCheck");
        System.out.println("check");
    }
}

값을 받아오는 기능은 서블릿의 HttpServletRequest 클래스를 사용하였다.
Spring은 내부적으로 servlet의 기능을 통해서 동작하기 때문에 Spring 내부 어디에서든지 servlet 기능을 사용할 수 있다.
httpServletRequest.getParameterMap().get("multiCheck");
체크박스의 name의 값을 이용해서 Map방식으로 불러와지는 것을 확인 할 수 있다.

  • httpServletRequest의 parameterMap에 multiCheck 키로 String[]로 값이 저장 되어 있다.

  • 최종적으로 B, C를 체크하여 값을 보낸 것이 컨트롤 내부에 선언된 문자열 배열에 저장되었다.
profile
응애

0개의 댓글