스프링 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 지정 />

 

와일드카드 이용 가능

myoskin