너무어려웡
502
2017-05-03 03:57:47 작성 2017-05-03 04:00:54 수정됨
3
3216

spring checkbox 배열 넘기기 관련 질문입니다 ㅠ


spring 이용해서 간단한 게시판 만들고 있는데요...

이런 형태로 체크 박스 이용해서 검색 기능 사용하려고 합니다


<%@ page language="java" contentType="text/html; charset=UTF-8"
	pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
<script>
	function search()
	{
	   	var search = document.getElementById("search_choice").value;
	   	var search_text = document.getElementById("search_text").value.trim();
	   	if(search_text==""){
	   		alert("검색내용을 입력하세요!");
	   		return;
	   	}
	   	
	   	location.href = "board.do?search=" + search +"&search_text=" + encodeURIComponent(search_text);	
		
	}
</script>

</head>
<body>
<div id="search_checkbox">
  <input id="search_choice" type="checkbox" value="subject"
	<c:if test="${param.search_choice eq '' or param.search_choice eq 'subject' or param.search_choice eq 'subject_content' or param.search_choice eq 'subject_nick' or param.search_choice eq 'subject_content_nick' }">
		checked="checked"
	</c:if>>제목
  <input id="search_choice" type="checkbox" value="content"
	<c:if test="${param.search_choice eq '' or param.search_choice eq 'content' or param.search_choice eq 'subject_content' or param.search_choice eq 'content_nick' or param.search_choice eq 'subject_content_nick'}">
		checked="checked"
	</c:if>>내용
  <input id="search_choice" type="checkbox" value="nick"
	<c:if test="${param.search_choice eq 'nick' or param.search_choice eq 'subject_nick' or param.search_choice eq 'content_nick' or param.search_choice eq 'subject_content_nick'}">
		checked="checked"
	</c:if>>닉네임
</div>
<div id="table_search">
	<input id="search_text" class="search_text" value="${ param.search_text eq '' ? '' : param.search_text }">
			
<input type="button" value="검색" class="btn" onclick="search();">
</div>
			 
</body>
</html>

이런식으로 컨트롤러에 넘겨주려고 하는데...

다른 체크박스를 눌러놓고 전송해도 계속

http://localhost:9090/board.do? search=subject&search_text=123

이런식으로 subject만 파라미터 값으로 들어오고

파라미터에 subject가 적혀 있는데도 check 표시는 되어있지도 않고 ㅠㅠ

param.search_choice eq ' ' 이런식으로 처음 페이지 열렸을 때 두개 다 체크 해주려고 했는데도 안 되고..

뭐가 문제 일까요ㅠㅠ..?

그리고 checkbox에 name을 동일하게 줘서 배열을 서버에 넘기는 방법도 있다는데...

전부 제이쿼리 사용해서  하는 방법 뿐이던데..ㅠ 사용 하지 않고 넘기는 방법도 있을까요...? 

0
0
  • 답변 3

  • 깨구리
    1k
    2017-05-03 04:18:23

    id는 유일한 값이어야 합니다. 여러 input 체크박스의 name이 같을 수는 있지만 id는 같으면 안됩니다.


    document.getElementById

    document.getElementsByName

    document.getElementsByClassName


    ById만 단수이고 다른 것들은 복수죠? javascript의 getElementById든 jQuery의 # 선택자든 document에서 발견한 첫번째 하나의 element만 가져옵니다. 다른 것들은  발견한 element들을 배열로 가져와요. 그리고 지금 올려주신 방법(location.href)은 매우 부자연스러우니, input을 form으로 감싸고 자바스크립트에서는 해당 폼을 submit() 시키는 것으로 수정하는 것이 좋을 것 같아요.

    0
  • 너무어려웡
    502
    2017-05-03 12:55:37

    하나의 jsp에서 처리 하려고 하는데

     컨트롤러에 넘긴 값들을 jsp에 파라미터로 넘길 때 url에 어떻게 넣어줘야 할까요...?

    0
  • 깨구리
    1k
    2017-05-03 21:36:46

    지금 코드에서 최소한의 수정만 하고 싶으시면 search_choice를 search_choice1, search_choice2, search_choice3으로 구분해서 넘기고 받아서 처리하면 됩니다.

    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.