среда, 10 августа 2011 г.

Немного о Tiles часть 3

Еще одна статья о tiles - отличие от Немного о tiles ч.2 в том, что мы работаем только через контекст - аннотации не используются. Во-вторых мы не используем property файл с замапленными классами-обработчками вьюшек и дефинишенов в tiles. Также следует отметить, что если прописать в tiles-defs.xml путь, который удовлетворяет url-pattern в web.xml - то сервлет обработает это значение и выведет его во вьюшку. В целом tiles-defs.xml - такой же как и части 2.
Поэтому тут будет приведен один из контроллеров и контекст файлы.

tiles-defs.xml выглядит следующим образом:
xml version="1.0" encoding="UTF-8" ?>
DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 2.0//EN"
       "http://tiles.apache.org/dtds/tiles-config_2_0.dtd">
<tiles-definitions>

  <definition name="baseLayout" template="/WEB-INF/tiles/baseLayout.jsp">
      <put-attribute name="title"  value="Template"/>
      <put-attribute name="header" value="/WEB-INF/tiles/header.jsp"/>
      <put-attribute name="menu"   value="/WEB-INF/tiles/menu.jsp"/>
      <put-attribute name="body"   value="/WEB-INF/tiles/body.jsp"/>
       <put-attribute name="footer"   value="/WEB-INF/tiles/footer.jsp"/>
  <definition>
  
  <definition name="welcome" extends="baseLayout">
      <put-attribute name="title"  value="Welcome"/>
      <put-attribute name="body"   value="/home.htm"/>
  <definition>
  
  <definition name="home" extends="baseLayout">
      <put-attribute name="title"  value="Home"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/home.jsp"/>
  <definition>
  
  <definition name="friends" extends="baseLayout">
      <put-attribute name="title"  value="Friends"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/friends.jsp"/>      
  definition>
  
  <definition name="office" extends="baseLayout">
      <put-attribute name="title"  value="Office"/>
      <put-attribute name="body"   value="/WEB-INF/jsp/office.jsp"/>      
  <definition>
  
  <definition name="about" template="/WEB-INF/jsp/about.jsp"/>     
  
<tiles-definitions> 


Далее рассмотрим dispatcher-servlet.xml :


xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p"
    xmlns:context="http://www.springframework.org/schema/context"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
                        http://www.springframework.org/schema/beans/spring-beans.xsd
                        http://www.springframework.org/schema/context 
                        http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="com.company.web" />

    <bean id="tilesConfigurer" 
        class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"
        p:definitions="/WEB-INF/tiles-defs.xml" />

    <bean id="tilesViewResolver" 
        class="org.springframework.web.servlet.view.UrlBasedViewResolver">
        <property name="viewClass" value="org.springframework.web.servlet.view.tiles2.TilesView" />
    <bean>

    <bean id="urlMapping" 
        class="org.springframework.web.servlet.mvc.support.ControllerClassNameHandlerMapping">
        <property name="order" value="0" />
    <bean>

    <bean name="home" class="com.company.web.HomeController" />
    <bean name="welcome" class="com.company.web.WelcomeController" />
    <bean name="about" class="com.company.web.AboutController"/>
    <bean name="friends" class="com.company.web.FriendsController"/>

<beans>

Ну и один из классов контроллеров. Все контроллеры лежат в пакете com.company.web


package com.company.web;

import java.util.ArrayList;
import java.util.List;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HomeController implements Controller {

    @Override
    public ModelAndView handleRequest(HttpServletRequest httpservletrequest,
            HttpServletResponse httpservletresponse) throws Exception {
        ModelAndView mv = new ModelAndView("home");
        List<String> list = new ArrayList<String>();
        list.add("First");
        list.add("Second");
        list.add("Third");
        mv.addObject("validData", list);
        mv.addObject("str", "test string on home");
        return mv;
    }

}


Ну и файл web.xml идентичен части 2. Собственно о tiles2 это пока все :)

Комментариев нет:

Отправить комментарий