[Spring] Spring의 form태그 라이브러리

Whatever·2022년 2월 4일
0

Spring(스프링)

목록 보기
8/29

* Spring의 form 태그

스프링 폼 태그 라이브러리

  • 스프링 폼은 HTML 폼을 표시하기 위한 태그 라이브러리

  • 스프링 폼을 이용하면 HTML 폼과 자바 객체를 쉽게 바인딩할 수 있음

    path : 폼 항목에 바인딩되는 폼 객체(Controller에 있음)의 프로퍼티를 지정


* Spring form 사용방법

1. JSP에 taglib 추가

1) 선언

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>

2) 태그 목록

  • <form:password> : 패스워드 필드 요소
  • <form:form> : 폼 요소
  • <form:input path="text"> : 테스트 필드. id="test" name="test"
  • <form:textarea> : 텍스트 영역
  • <form:checkbox> : 체크박스
  • <form:checkboxes> : 여러개 체크박스
  • <form:radiobutton> : 라디오 버튼
  • <form:radiobuttons> : 여러 개의 라디오 버튼
  • <form:select> : 셀렉트 박스
  • <form:hidden> : 숨겨진 필드
  • <form:label> : 라벨
  • <form:button> :버튼

2. Controller에서 attribute 세팅

1) 폼 객체의 속성명을 직접 지정

model.addAttribute("memberVO", new MemberVO());

2) 폼 객체의 속성명은 직접 지정하지 않으면 * 폼 객체의 클래스명의 맨 처음 문자를 소문자로 변환하여 처리

<form:form modelAttribute="memberVO" method="post" action="/member/insert">

3) ModelAttribute 애너테이션으로 폼 객체의 속성명을 gaeddong라고 지정했다면..
스프링 폼의 modelAttribute 속성의 값도 똑같이 gaeddong라고 작성해줘야 함

package kr.or.ddit;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

//자바빈으로 관리하겠다
@Controller
public class MemberController {

	@RequestMapping("/member/insert")
	public String insert(Model model, @ModelAttribute("memberVO") MemberVO memberVO) {

		memberVO.setMemberid("a001");
		memberVO.setName("개똥이");
		
		return "member/joinForm";
	}
	
}

<form:password> 속성

controller

member/insert


패스워드 속성은 JSP로 전달되지 않는다.


[CheckBox 나타내기]

방법1) List로 설정하는 방법 - <form:checkboxs>

  1. 먼저 Controller에서 Map으로 취미 리스트를 세팅한다.
	@RequestMapping("/member/insert")
	public String insert(Model model, @ModelAttribute("memberVO") MemberVO memberVO) {
	
		//취미 세팅
		Map<String, String> hobbyMap = new HashMap<String, String>();
		hobbyMap.put("01", "야구");
		hobbyMap.put("02", "BTS Music");
		hobbyMap.put("03", "스파이더맨 시리즈");
		
		model.addAttribute("hobbyMap", hobbyMap); //Model객체에 Attribute로 hobbyMap설정
		
		return "member/joinForm";
	}
  1. JSP에 값을 설정한다.
	<p>
		취미 : 
		<form:checkboxes path="hobbyList" items="${hobbyMap}" />
	</p>

${hobbyMap}으로 items 설정하기.

  1. 선택

    선택한 값 가져오기
		List<String> hobbyList = memberVO.getHobbyList();
		for(String hobby : hobbyList) {
			logger.info(hobby);
		}

콘솔창 :

방법2) String[] 배열로 설정하는 방법 - <form:checkbox>

  1. JSP에서 checkbox로 값 만들기
	<p>
		취미(hobbyArray) : 
		<form:checkbox path="hobbyArray" value="안찰수" label="안찰수" /><br>
		<form:checkbox path="hobbyArray" value="이죄명" label="이죄명" /><br>
		<form:checkbox path="hobbyArray" value="응등이탐정" label="응등이탐정" /><br>
		<form:checkbox path="hobbyArray" value="쉼상정" label="쉼상정" /><br>
	</p>
  1. Controller에 배열(Array)로 넘어간다.
  2. String[]로 받아와서 값 뿌리기
@RequestMapping(value="/member/insert", method=RequestMethod.POST)
	public String insertPost(@ModelAttribute MemberVO memberVO) {
		
		String[] hobbyArray = memberVO.getHobbyArray();
		for(String hobby:hobbyArray) {
			logger.info(hobby);
		}
		 

[Radio 속성 나타내기]

Controller

//성별 세팅
		Map<String, String> genderMap =
				new HashMap<String, String>();
		genderMap.put("Male", "남성");
		genderMap.put("Female", "여성");
		genderMap.put("Other", "기타");
		
//		session.setAttribute("gender", "genderMap");와 비슷한 역할
		model.addAttribute("genderMap", genderMap);

방법1) <form:radiobuttons> 사용

	<p>
		성별 : 
		<form:radiobuttons path="gender" items="${genderMap}"/>
	</p>

Controller에서 Model객체에 저장한(setAttribute) genderMap을 JSP에서 ${ }로 꺼내왔다.

방법2) <form:radiobutton> 사용

<p>
		성별 : 
		<form:radiobutton path="gender" value="Male" label="Male" />&nbsp;
		<form:radiobutton path="gender" value="Female" label="Female" />&nbsp;
		<form:radiobutton path="gender" value="Other" label="Other" />
	</p>

0개의 댓글