RevFactory 2012. 12. 4. 03:05

Spring Tag Library

meassage tag(<spring:message>)

스프링은 메시지 리소스 파일로 부터 메시지를 가져와 간편하게 출력할수 있도록, <spring:message> 태그를 제공한다.
JSP 페이지의 타이틀을 <spring:message>를 이용해서 출력하는 예제를 만들어 보자.

빈 정의 파일에 리소스 번들 관련된 설정이 되어 있어야 한다.

<!-- Message Source-->
<bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource"
	p:basename="messages"/>

먼저 메시지 관련 리소스 파일에 코드값을 설정해준다. PropertiedEditor 같은 유틸의 도움을 받으면 편리하게 한글 입력-편집이 가능하다.

/easycompany/webapp/WEB-INF/classes/messages_ko.properties

...
# -- spring:message --
easaycompany.loginform.title=로그인페이지
easaycompany.employeelist.title=사원 정보 리스트 페이지
easaycompany.updateemployee.title=사원 정보 수정 페이지
easaycompany.insertemployee.title=사원 정보 입력 페이지
easaycompany.departmentlist.title=부서 정보 리스트 페이지
easaycompany.updatedepartment.title=부서 정보 수정 페이지
easaycompany.insertdepartment.title=부서 정보 입력 페이지

JSP 페이지에 커스텀 태그를 사용하기 위해 라이브러리 선언을 해줘야 한다.그리고 <spring:message> 태그의 code 값에는 메시지 키값을 주면 된다.

...
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><spring:message code="easaycompany.departmentlist.title"/></title>
...

해당 화면의 타이틀이 “부서 정보 리스트 페이지”로 표기 될 것이다.

form tag(<form:form>,<form:input>,...)

폼 관련 어플리케이션을 개발할 때는 스프링이 제공하는 폼 태그와 같이 사용하면 편리하다.
스프링 폼 태그는 Model 데이터의 커맨드 객체(command object)나 참조 데이터(reference data)들을 화면상에서 쉽게 출력하도록 도와 준다.
일단, 스프링 폼 태그를 사용하려면 페이지에 커스텀 태그 라이브러리를 선언해야 한다.

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

스프링 폼 태그에는 아래와 같은 태그들이 있다.

<form:form>
<form:form>는 속성 commandName에 정의된 model attribute를 PageContext에 저장해서, <form:input>이나 <form:hidden>같은 tag들이 접근할 수 있도록 한다.
관련 속성은 아래와 같다.

  • commandName : 참조하려는 model attribute 이름.
  • action : 폼 전송할 URL
  • method : 폼 전송시에 HTTP 메소드(GET,POST)
  • enctype: 폼 전송시에 데이터 인코딩 타입.

<form:form> 태그를 사용하고 출력된 페이지에서 소스 보기로 HTML 코드를 열어보면 아래와 같이 HTML FORM 태그가 출력된걸 확인할 수 있을것이다.

<form:form commandName="department" action="http://myUrl..." method="post"> -> <form id="department" action="http://myUrl..." method="post">
 
<form:form commandName="department"> -> <form id="department" action="현재페이지 URL" method="post">


<form:input>
HTML text타입의 input 태그에 commandName에 지정된 객체 프로퍼티를 바인딩하기 위해 사용한다.
path에 프로퍼티 이름을 적으면, text타입의 input 태그의 id, name 값이 프로퍼티 이름이 되고, value는 해당 프로퍼티의 값이 된다.

<form:form commandName="department">
	<tr>
		<th>부서이름</th>
		<td><form:input path="deptname" size="20"/></td>
	</tr>
</form:form>

아래와 같이 HTML로 출력된다.

<form id="department" action="/easycompany/updateDepartment.do?deptid=1100" method="post">
	<tr>
		<th>부서이름</th>
		<td><input id="deptname" name="deptname" type="text" value="회식메뉴혁신팀" size="20"/></td>
	</tr>
</form>

<form:password>
HTML password타입의 input 태그에 commandName에 지정된 객체 프로퍼티를 바인딩하기 위해 사용한다.
바인딩값을 표기하기 위해서는 showPassword 속성을 showPassword=“true”로 지정해 주어야 한다.

<form:hidden>
HTML hidden타입의 input 태그에 commandName에 지정된 객체 프로퍼티를 바인딩하기 위해 사용한다.

<form:select>, <form:options>, <form:option>
HTML select, option 태그에 commandName에 지정된 객체 프로퍼티를 바인딩하기 위해 사용한다.
아래와 같이 <form:select>의 path 속성에 commandName 객체의 프로퍼티를 지정하고,
<form:options>의 items 속성에 List, Map등의 Collection 객체를 값으로 주면,

<form:form commandName="department">
	<tr>
		<th>상위부서</th>
		<td>
			<form:select path="superdeptid">
				<option value="">상위부서를 선택하세요.</option>
				<form:options items="${deptInfoOneDepthCategory}" />
			</form:select>
		</td>
	</tr>
</form:form>

아래와 같이 HTML로 출력된다. <form:select>의 path 속성값과 일치하는 option 값이 있으면 selected=“selected” 된다.

<form id="department" action="/easycompany/updateDepartment.do?deptid=1100" method="post">
	<tr>
		<th>상위부서</th>
		<td>
			<select id="superdeptid" name="superdeptid">
				<option value="">상위부서를 선택하세요.</option>
				<option value="5000">금융사업부</option>
                                <option value="3000">IT연구소</option>
                                <option value="4000">공공사업부</option>
                                <option value="1000" selected="selected">경영기획실</option>
                                <option value="2000">경영지원실</option>
			</select>
		</td>
	</tr>
</form>

<form:checkboxes>

<form:checkbox>

error tag(<form:errors>)

 

 

출처 : http://www.egovframe.org