JSP

jsp) form에서 checkbox 배열로 받아 한 줄로 DB저장.

값을변경 2022. 12. 31. 17:31


form에서 fruit을 배열로 보내기는 끝.

<form>
  <input type="checkbox" name="fruit" value="사과">사과
  <input type="checkbox" name="fruit" value="배">배
  <input type="checkbox" name="fruit" value="감">감
  <input type="submit" value="제출">
</form>



배열로 받기 끝.

String[] fruitArr = request.getParameterValues("fruit");



DB로 저장하기 위해 배열을 문자열로 바꿈.
차례대로 newFruitArr에 저장되며 마지막 인덱스 값 뒤에는 ' , ' 가 오지 않는다.

String[] fruitArr = request.getParameterValues("fruit");

String newFruitArr="";

// 1번
		for(int i=0; i < fruitArr.length; i++) {
			if(fruitArr.length-1 > i ) {
				newFruitArr += fruitArr[i] + ","; 
			}else {
				newFruitArr += fruitArr[i];
			}
		}
 
 // 2번
    newFruitArr = String.join(",", fruitArr);
    
    //1번, 2번 같음 ㅋ


DB입력 시 newFruitArr를 저장하면 한 줄로 데이터가 들어감.

마지막 콤마를 안 찍게 하고 싶어서 코드를 이리저리 만져 봄.
머리가 안돌아가니 하나하나 출력 결과물 보면서 써봄.
그리고 String.join(string, Object[])을 찾아봄.
* 디버그 다루는법 공부하기.


이렇게 하면 data 꺼낼 때 다시 배열로 해줘야겠지..
처음엔 checkbox마다 이름을 다르게 주었고, DB column에도 각각 해서 3개 만들어 저장함.
지금은 column을 하나만 써서 해보고 싶어 짐.
정답은 배열을 그냥 한 문자열로 받으면 됨.


꺼낼때 배열로 바꾸지 말고, jstl 'fn:contains'로 꺼내쓰기