Hiển thị các bài đăng có nhãn master page. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn master page. Hiển thị tất cả bài đăng

Thứ Tư, 1 tháng 1, 2014

Template với Apache Tiles trong Spring MVC

Khi xây dựng một ứng dụng web, ta thường đặt nội dung trang web trong các template, để trình bày theo một bố cục nhất định. Tương tự như trong aspx có master page,  công nghệ jsp cũng hộ trợ template nhờ thẻ <%@include file ="xxx.jsp"%>
Nếu không sử dụng cách trên, Apache Tiles là một lựa chọn phổ biến trong jsp technology.
Apache Tiles là một fw độc lập, có thể tích hợp với nhiều fw khác như Struts, JSF, Spring..
Có thể tìm hiểu thêm thông tin trên google và trên trang chủ của Apache Tiles https://tiles.apache.org/
Example sẽ lấy từ đây: http://diepviends.blogspot.com/2013/12/xu-ly-form-trong-spring-mvc.html
Ví dụ của chúng ta sẽ trình bày theo bố cục sau:


Đầu tiên import các thư viện cần thiết-> thêm dependency vào pom.xml

  
   org.apache.tiles
   tiles-core
   2.2.2
   
    
     commons-logging
     commons-logging
    
   
  
  
   org.apache.tiles
   tiles-jsp
   2.2.2
  
Hiện tại Tiles đã có version 3, trong bài viết này ta sử dụng tiles 2 (đang rất phổ biến trong các ứng dụng j2ee)
Ta xây dựng các phần cho template:
header.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
Header
menu.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
menu
footer.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
footer
default.jsp
<tiles:insertAttribute name="title" />
Ở đây ta dùng tag
để chèn nội dung vào tương tự như
<%@include file ="xxx.jsp"%>
và import vào taglib
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles" %>

Tiếp theo ta cấu hình cho dispatcher servlet


    
        
    
    
    
        
            
                /WEB-INF/layouts/layouts.xml
                
                /WEB-INF/views/**/views.xml
            
        
    
Ở trên tất cả các controller khi trả về view name thì spring sẽ hiển thị view là tiles, các định nghĩa của tiles sẽ nằm trong các file views.xml trong thư mục /WEB-INF/views/ (kể cả thư mục con) và layout để hiển thị tham chiếu từ file layouts.xml trong thư mục /WEB-INF/layouts/
layouts.xml

	
		
		
		
		
		
	
	

để định nghĩa cho template ta chỉ cần put attribute cần đưa vào layout, ví dụ ở đây, template thì header, menu, footer là cố định, còn title và content thì được truyền vào (định nghĩa trong views.xml) views.xml

    
        
        
    
    
        
        
    

Mỗi trang cần áp dụng template thì ta sẽ định nghĩa trong views.xml. trong ví dụ thì ta định nghĩa cho màn create product và hiển thị danh sách product
Kết quả:

Source code: http://www.mediafire.com/download/dodubbe20yaxz0m/Store_tiles.rar
Thanks & Regard!