티스토리 뷰
일단 기본적인 Tiles 적용은 되어있다고 가정하고 진행을 하겠습니다.
tiles 적용법은 https://it-gosu.tistory.com/3 포스팅 참고
viewPreparer 적용은 간단합니다.
dispatcher-servlet.xml 의 tiles 부분은 다음과 같습니다.
저 부분에서 제가 빨간색으로 원을 그려놓은 부분을 참고해 주시면 됩니다.
1
2
3
4
5
6
|
<!-- ViewPreparer을 위한 bean 등록 -->
<!-- id : bean을 사용하기 위한 DI // class : 패키지명.클래스이름 -->
<property name="preparerFactoryClass" value="org.springframework.web.servlet.view.tiles3.SpringBeanPreparerFactory"></property>
|
preparerFactoryClass :: tiles에 추가적인 기능을 더해주기 위해 선언한 부분이다.
preparer는 렌더링 하기 전 거쳐가는 것?? 이라고 한다
쉽게말하면 화면띄우기전 한번 거쳐간다고 생각하시면 될 것 같아요.
property를 선언해주고, 저 것을 사용해주기위해 bean(애플리케이션의 핵심을 이루는 객체)을 하나 생성해줍니다.
다음은 tile.xml 파일입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE tiles-definitions PUBLIC "-//Apache Software Foundation//DTD Tiles Configuration 2.1//EN" "http://tiles.apache.org/dtds/tiles-config_2_1.dtd">
<tiles-definitions>
<!-- 메뉴 탭 타일즈 -->
<definition name="layouts-tiles" template="/WEB-INF/tiles/tiles-layout.jsp" preparer="menuPreparer" >
<put-attribute name="body" value=""/>
</definition>
<definition name="*/*.tiles" extends="layouts-tiles">
<put-attribute name="body" value="/WEB-INF/jsp/cms/{1}/{2}.jsp" />
</definition>
</tiles-definitions>
|
빨간색 네모친부분에 bean으로 등록한 id를 맞게 입력해줍니다.
bean등록에 preparer까지 설정했으면 다음으로 MenuPreparer 클래스 파일을 생성해 줍니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
package com.test;
import org.apache.tiles.Attribute;
import java.util.ArrayList;
import java.util.List;
public class MenuPreparer implements ViewPreparer {
@Override
public void execute(Request request, AttributeContext attributeContext) throws PreparerException {
System.out.println("Tiles Menu @@@@@@@@@@@@@@@@@@@@@@@@");
List<String> menuList = new ArrayList<String>();
menuList.add("홈");
menuList.add("로그인");
menuList.add("회원가입");
attributeContext.putAttribute("menuList", new Attribute(menuList), true);
}
}
|
ViewPreparer안에 있는 execute라는 메소드를 상속받아서 사용합니다.
실행 순서는 다음과 같습니다
Controller 진입 > interceptor pre 실행 > controller 실행 > interceptor post실행 > preparer 실행
위와같이 메뉴리스트를 DB에서 가지고 온 후
1
2
3
4
|
<tiles:importAttribute name="menuList"/>
<c:forEach var ="menu" items="${menuList}">
<button>${menu}</button>
</c:forEach>
|
header.jsp 파일에서 다음과같이 사용하면 동적인 메뉴를 구성할 수 있습니다.
'Spring' 카테고리의 다른 글
ajax json 리턴하기, ModelAndView("jsonView") (0) | 2020.03.10 |
---|---|
전자정부프레임워크(egov), Spring - Interceptor 설정하기 (1) | 2020.01.22 |
전자정부프레임워크(egov), spring - tiles 적용하기 (0) | 2020.01.15 |
스프링의 주요특징 (0) | 2018.03.22 |
- Total
- Today
- Yesterday
- centos7
- html
- modelandview
- tiles #tiles3 #spring #ViewPreparer #Preparer #동적매뉴구성 #동적매뉴 #타일즈적용
- button submit막기
- json
- spring #tiles #egov #전자정부프레임워크 #tiles적용
- JsonView
- jsp
- GitLab설치
- return json
- #스프링 #spring #특징 #스프링특징 #java
- form submit
- #egov #전자정부 #spring #interceptor #인터셉터
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |