SPRING

[SPRING] FORM TAG 요소 - 2

예나부기 2021. 7. 23.

<form:select>

  • select 태그를 생성
  • path : 설정한 문자열은 id와 name 속성으로 지정되며,
  • model의 값을 추출해 그 값과 동일한 value 속성의 option태그를 선택한다.
<form:form action='result' modelAttribute="dataBean">
 <form:select
path="a1">
      <form:option value="data1">항목1</form:option>
      <form:option value="data2">항목2</form:option>
      <form:option value="data3">항목3</form:option>
 </form:select>
</form:form>

 

<form:option>, <form:options>

  • <form:option> : select 태그의 option 태그 하나를 생성
  • <form:options> : select 태그의 option들을 생성
  • items : option 태그들을 생성할 때 필요한 데이터가 담긴 list나 배열 

예제

1)TestController에서 data_list1이라는 배열 만들어주고, model에 담아주기

@Controller
public class TestController {
	
	@GetMapping("/test1")
	public String test1(DataBean bean, Model model) {
		
		String [] data_list1 = {"data1", "data2", "data3"};
		model.addAttribute("data_list1", data_list1);
        
		return "test1";
	}
}

+또는 배열이 아니라 ArrayList에 담아줘도 된다.

@Controller
public class TestController {
	
	@GetMapping("/test1")
	public String test1(DataBean bean, Model model) {
		 
       	ArrayList<String> data_list1 = new ArrayList<String>();
		data_list2.add("data1");
		data_list2.add("data2");
		data_list2.add("data3");
		model.addAttribute("data_list1", data_list1);
		
		return "test1";
	}
}

2)requestScope를 통해 선택지를 가져오기

<form:form action='result' modelAttribute="dataBean">
 <form:select path="a2">
      <form:options items="${requestScope.data_list1 }"/>
 </form:select>
</form:form>

value속성에 있는 값과, 선택지에 나타날 문자를 다르게 나타내고 싶을 땐?

1) Bean 생성

public class KeyValueBean {
	private String key;
	private String value;
	
	public String getKey() {
		return key;
	}
	public void setKey(String key) {
		this.key = key;
	}
	public String getValue() {
		return value;
	}
	public void setValue(String value) {
		this.value = value;
	}
}

2)TestController에서 key와 value를 세팅 

-key 에는 실제 옵션에 나타날 선택지(문자열)를 적고,

-value 에는 value 속성에 들어갈 값을 세팅 후 model에 담아준다.

@Controller
public class TestController {
	
	@GetMapping("/test1")
	public String test1(DataBean bean, Model model) {
		
		bean.setA1("data2");
		bean.setA2("data2");
		bean.setA3("data2");
		bean.setA4("data2");
		
		String [] data_list1 = {"data1", "data2", "data3"};
		model.addAttribute("data_list1", data_list1);
		
		ArrayList<String> data_list2 = new ArrayList<String>();
		data_list2.add("data1");
		data_list2.add("data2");
		data_list2.add("data3");
		model.addAttribute("data_list2", data_list2);
		
		KeyValueBean key_bean1 = new KeyValueBean();
		KeyValueBean key_bean2 = new KeyValueBean();
		KeyValueBean key_bean3 = new KeyValueBean();
		
		key_bean1.setKey("항목1");
		key_bean1.setValue("data1");
		
		key_bean2.setKey("항목2");
		key_bean2.setValue("data2");
		
		key_bean3.setKey("항목3");
		key_bean3.setValue("data3");
		
		ArrayList<KeyValueBean> data_list3 = new ArrayList<KeyValueBean>();
		data_list3.add(key_bean1);
		data_list3.add(key_bean2);
		data_list3.add(key_bean3);
		
		model.addAttribute("data_list3", data_list3);
		
		return "test1";
	}
}

3)test1.jsp 세팅

<form:form action='result' modelAttribute="dataBean">
  <form:select path="a4">
      <form:options items="${requestScope.data_list3 }" itemLabel="key" itemValue="value"/>
  </form:select>
</form:form>

-itemLabel : getKey 매소드를 호출해서 반환하는 문자열을 선택지에 보여준다.

-itemValue : getValue 매소드를 호출해서 해당 문자열의 값을 value에 세팅한다.

 

 

key와value를 사용해서 세팅을 다르게 한 경우와 비교하기

 

<form:checkbox>, <form:checkboxs>

  • <form:checkbox> : 체크박스 하나를 생성
  • <form:checkboxs> : 체크박스들을 생성
  • items : 체크박스를 생성할 때 필요한 데이터가 담긴 list나 배열 

예제

1)DataBean생성하기 - 배열 생성

public class DataBean {

	private String [] a5;
	private String [] a6;
	private String [] a7;
	private String [] a8;

	public String[] getA5() {
		return a5;
	}

	public void setA5(String[] a5) {
		this.a5 = a5;
	}

	public String[] getA6() {
		return a6;
	}

	public void setA6(String[] a6) {
		this.a6 = a6;
	}

	public String[] getA7() {
		return a7;
	}

	public void setA7(String[] a7) {
		this.a7 = a7;
	}

	public String[] getA8() {
		return a8;
	}

	public void setA8(String[] a8) {
		this.a8 = a8;
	}

}
@Controller
public class TestController {
	
	@GetMapping("/test1")
	public String test1(DataBean bean, Model model) {
		
		String [] check_list = {"data1", "data3"};
		bean.setA5(check_list);
		bean.setA6(check_list);
		bean.setA7(check_list);
		bean.setA8(check_list);
		
		return "test1";
	}
}

2) test1.jsp 세팅

<form:form action='result' modelAttribute="dataBean">
      <form:checkbox path="a5" value="data1"/>항목1
      <form:checkbox path="a5" value="data2"/>항목2
      <form:checkbox path="a5" value="data3"/>항목3
</form:form>

-a5배열에 있는 값을 가지고 와서 value 속성의 값이 있는지 확인해서 체크한다.

-실행 결과를 보면, "data1", "data2"의 value가 들어있는 항목1, 항목3은 체크된다. 

 

value 값이 동일한 항목1과 항목3은 checked 속성이 "checked"라고 되어있음

 

<form:form action='result' modelAttribute="dataBean">
<form:checkboxes
items="${requestScope.data_list1 }" path="a6"/>   ---------------------- 배열 사용해보기
<hr/>
<form:checkboxes items="${requestScope.data_list2 }" path="a7"/>   ---------------------- ArrayList사용해보기 
<hr/>
<form:checkboxes items="${requestScope.data_list3 }" path="a8" itemLabel="key" itemValue="value"/>--------------- KeyValue 사용해보기
</form:form>

 

<form:radiobutton>, <form:radiobuttons>

  • <form:radiobutton> : 라디오버튼 하나를 생성
  • <form:radiobuttons> : 라디오버튼들을 생성
  • items : 라디오버튼를 생성할 때 필요한 데이터가 담긴 list나 배열 

1)DataBean생성하기 - 배열 생성

public class DataBean {

	private String a9;
	private String a10;
	private String a11;
	private String a12;

	public String getA9() {
		return a9;
	}

	public void setA9(String a9) {
		this.a9 = a9;
	}

	public String getA10() {
		return a10;
	}

	public void setA10(String a10) {
		this.a10 = a10;
	}

	public String getA11() {
		return a11;
	}

	public void setA11(String a11) {
		this.a11 = a11;
	}

	public String getA12() {
		return a12;
	}

	public void setA12(String a12) {
		this.a12 = a12;
	}
}

2)TestController에서 bean에 값을 세팅

@Controller
public class TestController {
	
	@GetMapping("/test1")
	public String test1(DataBean bean, Model model) {

		bean.setA9("data2");
		bean.setA10("data2");
		bean.setA11("data2");
		bean.setA12("data2");
		
		return "test1";
	}
}

3)test1.jsp 생성

<form:form action='result' modelAttribute="dataBean">
<form:radiobutton
path="a9" value="data1"/>항목1
<form:radiobutton path="a9" value="data2"/>항목2
<form:radiobutton path="a9" value="data3"/>항목3
<hr/>
<form:radiobuttons path="a10" items="${requestScope.data_list1 }"/> ---------------------- 배열 사용해보기
<hr/>
<form:radiobuttons path="a11" items="${requestScope.data_list2 }"/>  --------------------- ArrayList사용해보기
<hr/>
<form:radiobuttons path="a12" items="${requestScope.data_list3 }" itemLabel="key" itemValue="value"/>--------------- KeyValue 사용해보기
</form:form>

 

'SPRING' 카테고리의 다른 글

[SPRING] Request Scope  (0) 2021.07.25
[SPRING] Redirect와 Forward  (0) 2021.07.24
[SPRING] FORM TAG 요소 - 1  (0) 2021.07.21
[SPRING] Form 커스텀 태그  (0) 2021.07.20
[SPRING] 커맨드 객체  (0) 2021.07.20

댓글