스프링 view 구현 (jsp)
Spring Jsp Custom Tag Library
Form Binding
command 객체에 저장된 값을 form에서 참조할때 사용한다.
custom tag library 선언
<%@ taglib prefix=“form" uri="http://www.springframework.org/tags/form" %>
<form:form modelAttribute="model 객체 이름 지정" action="현재 요청의 URI" method="get/post">
<form:input> <form:password> <form:hidden> : input 엘리먼트들을 생성, path속성에 id 및 name 값
<form:select path="값" items="option생성에 사용될 collection객체 지정">
<form:options> : itemLabel, itemValue 속성을 collection의 원소가 String이 아닐 경우 사용한다.
<form:option> : 하나의 <option> 엘리멘터 생성
<form:checkboxes>, <form:checkbox>
<form:radiobuttons>, <form:radiobutton>
<form:textarea>
외부화된 메시지 출력
<spring:message>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title> <spring:message code="login.form.title"/> </title>
</head>
properties 파일에 별도로 login.form.title=Login Form과 같이 메세지 내용을 작성해주어야함
오류 메세지 출력
<form:errors>
command 객체의 유효성 검증 결과로 생성된 오류 정보를 jsp view에 출력
속성
path : 오류와 연관된 command 객체의 property 지정
element : 오류 메시지를 출력 할 때 사용할 HTML tag 지정
cssClass : 오류 메시지 출력 시 사용할 CSS class 지정
delimiter : 여러개의 오류가 발생 시 각 오류 구분을 위한 HTML tag 지정
<spring:hasBindErrors name="registry" / > <!-- command객체에 대한 error 정보 이용 -->
<form:errors path="registry" /> <!-- command객체에 대한 global error message 출력 -->
<form action="homepageRegistry.do" method="post">
<label for="homepage">홈페이지 주소</label>
<input type="text" id="homepage” name=“homepage” value="${registry.homepage}">
<form:errors path="registry.homepage" cssClass="error" />
<!-- registry.homepage property와 관련된 모든 error message 출력 -->
Tiles
page layout
Apache Tiles Project에서 개발한 프레임워크
Page layout을 컨텐트와 분리하여 구성 요소들을 동적으로 삽입한다.
<jsp:include>나 @include 사용에 비해 유연성 및 유지보수 편의성을 증가 시킨다.
Maven dependencies에 추가
<dependency>
<groupId>org.apache.tiles</groupId>
<artifactId>tiles-jsp</artifactId>
<version>3.0.8</version>
</dependency>
Spring 설정을 위해
xml
<bean id="tilesConfigurer"
class="org.springframework.web.servlet.view.tiles3.TilesConfigurer">
<property name="definitions">
<list>
<value>/WEB-INF/jsp/tiles/template/tilesdef.xml</value>
</list>
</property>
</bean>
<bean id="tilesViewResolver"
class="org.springframework.web.servlet.view.tiles3.TilesViewResolver"
p:order=“1” />
JavaConfig
@Configuration
public class TilesConfig {
@Bean(name="tilesConfigure")
public TilesConfigurer tilesConfigurer() {
final TilesConfigurer configurer = new TilesConfigurer();
configurer.setDefinitions(new String[]{"/WEB-INF/jsp/tiles/template/tilesdef.xml"});
return configurer;
}
@Bean(name="viewResolver")
public TilesViewResolver tilesViewResolver() {
TilesViewResolver resolver = new TilesViewResolver();
resolver.setViewClass(TilesView.class);
resolver.setOrder(1);
return resolver;
}
}
Tiles custom tag library선언 해주기
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>
<tiles:inserAttribute name=" "/> : 외부 content 삽입 위치 지정
<tiles:getAsString name=" "/> : 외부 text 삽입 위치 지정
Tiles definitions
<definition> 태그를 이용해 레이아웃과 뷰를 정의한다.
template 속성 : layout template file 지정
<put-attribute name=" " value="jsp파일명" />
extends 속성 : 기반이 될 layout 지정
<put-attribute name=" " value="view의 content를 생성할 jsp file 지정 />
와일드카드 이용 가능