¿Cómo eliminar una ficha en las fichas de apache para una vista específica?

Quiero saber cómo eliminar un mosaico de una vista. Mi vista principal se ve así

La configuración del mosaico se compone de 4 piezas: encabezado, menú, cuerpo y pie de página.

Ahora sé que si solicito una nueva página, puedo anular la vista principal para, por ejemplo, reemplazar el cuerpo, de modo que se muestre un contenido diferente allí.

Pero quiero poder hacerlo si hago clic en el enlace en el menú que me llevará a una página que solo tiene un encabezado y un cuerpo (sin menú ni pie de página).

Luego, el usuario completará un asistente al que puede ir de una página a otra y, una vez que haya terminado, deberá volver al diseño principal.

Y esta es mi pregunta: ¿Cómo elimino el menú y el pie de página de una vista? Mi pregunta se detiene aquí.

Como no pude encontrar mucha documentación sobre mosaicos, pensé que incluiría un ejemplo paso a paso para alguien más que tenga dificultades para obtener un ejemplo funcional de cómo usar Apache Tiles y Spring MVC con Spring Tool Suite (Mi versión es STS 3.2.0).

PASOS A seguir para crear un sitio simple utilizando STS

Crear un nuevo proyecto STS

Archivo >> Nuevo >> Spring Template Project >> Spring MVC Project

Seleccione la opción "Spring MVC Project"

Dale a tu proyecto un nombre y un paquete de nivel superior.

Esto creará un proyecto como el siguiente

Cambie el POM para usar SPRING 3.2.0.RELEASE

Desde:

<org.springframework-version>3.1.1.RELEASE</org.springframework-version>

A:

<org.springframework-version>3.2.0.RELEASE</org.springframework-version>
Agregue las siguientes dependencias al archivo POM para incluir las dependencias de Apache Tile
<!-- Tiles -->
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-api</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-core</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-jsp</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-servlet</artifactId>
    <version>3.0.1</version>
</dependency>
<dependency>
    <groupId>org.apache.tiles</groupId>
    <artifactId>tiles-template</artifactId>
    <version>3.0.1</version>
</dependency> 
Cambie el "servlet-context.xml" para usar el TilesViewResolver en lugar del predeterminado InternalViewResolver
<!-- Remove -->
<beans:bean class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
    <beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></beans:property>
    <beans:property name="order" value="0"></beans:property>
</beans:bean>
 
<!-- Add -->
<beans:bean class="org.springframework.web.servlet.view.tiles3.TilesViewResolver">
<beans:property name="viewClass" value="org.springframework.web.servlet.view.tiles3.TilesView"></beans:property>
    <beans:property name="order" value="0"></beans:property>
</beans:bean>
Agregue la referencia para saber dónde están configurados los mosaicos.
<beans:bean class="org.springframework.web.servlet.view.tiles3.TilesConfigurer" id="tilesConfigurer">
    <beans:property name="definitions" value="/WEB-INF/spring/tiles.xml"> </beans:property>
</beans:bean>
Ahora especifique la vista: los archivos JSP que se usarían para especificar las vistas ... por ejemplo. el encabezado, el menú, el pie de página y el cuerpo (esto puede incluir el contenido real y, por lo general, tendrá más de 1 cuerpo dependiendo de lo que el usuario haya hecho clic en el menú): el diseño será como la primera imagen de esta publicación.

Archivos JSP creados en la carpeta de visualización, cada uno con su contenido.

header.jsp

<h2>This is the header</h2>

footer.jsp

<p>This is the footer</p>

content1.jsp

<h1>This is content page 1</h1>
<p>Blah blah content 1</p>

content2.jsp

<h1>This is content page 2</h1>
<p>Blah blah content 2</p>

menu.jsp

<h2>Menu</h2>
    <a href="">Go to home page</a><br/>
    <a href="page1">Display page 1</a><br/>
    <a href="page2">Display page 2</a>
Cuando se crea el proyecto, crea un controlador predeterminado llamado "HomeController.java". Esto es lo que se usa para determinar dónde ir a continuación al hacer clic en los elementos del menú. Si abre el controlador de la casa y lo cambia a la siguiente
package com.stp.myapp;
import java.util.Locale;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.servlet.ModelAndView;
/**
 * Handles requests for the application home page.
 */
@Controller
public class HomeController {
    /**
     * The request mapping has a value. That is what we are 
* requesting for. When opening the site it will request the main 
* page or the index page. The “/” indicates it is the index page.
* In this simple example we simply return the new ModalAndView with 
* the page in the view folder. In This case it is the mainPage.
* The mainPage is the reference of what is configured in the 
* apache tiles configuration – not the actual page that will be 
* displayed. 
     */
        @RequestMapping(value = "/", method = RequestMethod.GET)
        public ModelAndView home(Locale locale, Model model) {
        return new ModelAndView("mainPage");
        }

        /**
         * The request mapping is for page1 (page1 is the value from the menu.
         */

        @RequestMapping(value = "/page1", method = RequestMethod.GET)
        public ModelAndView viewArticle(Locale locale, Model model) {
        return new ModelAndView("displayPageContent1");
        }

        @RequestMapping(value = "/page2", method = RequestMethod.GET)
        public ModelAndView viewEmployees(Locale locale, Model model) {
        return new ModelAndView("displayPageContent2");
    }

}
Ahora vamos a configurar los azulejos

Crea un archivo "tiles.xml" con

 <?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">

<!-- This file has several definitions of page layouts -->
<tiles-definitions>

    <!-- The main definition with the header footer menu and body -->
    <definition name="base.definition" template="/WEB-INF/views/mainTemplate.jsp">
        <put-attribute name="title" value=""></put-attribute>
        <put-attribute name="header" value="/WEB-INF/views/header.jsp"></put-attribute>
        <put-attribute name="menu" value="/WEB-INF/views/menu.jsp"></put-attribute>
        <put-attribute name="body" value=""></put-attribute>
        <put-attribute name="footer" value="/WEB-INF/views/footer.jsp"></put-attribute>
    </definition>

    <!-- Now you can specify as many layours as you want... The name will match the names the --> 
    <!-- HomeController.java returns aka... as we specified it as displayPageContent1 and displayPageContent2 -->
    <!-- You can override each of the base.definition entries. In this we change the page title and display a different -->
    <!-- page as the body. As we didn't override the menu of footer it will display as specified in tha base.defition-->
    <definition name="displayPageContent1" extends="base.definition">
        <put-attribute name="title" value="Page context 1 displaying..."></put-attribute>
        <put-attribute name="body" value="/WEB-INF/views/content1.jsp"></put-attribute>
    </definition>

    <definition name="displayPageContent2" extends="base.definition">
        <put-attribute name="title" value="Employees List"></put-attribute>
        <put-attribute name="body" value="/WEB-INF/views/content2.jsp"></put-attribute>
    </definition>

     <definition name="mainPage" extends="base.definition">
        <put-attribute name="title" value="This is the home page being displayed....."></put-attribute>
        <put-attribute name="body" value="/WEB-INF/views/home.jsp"></put-attribute>
    </definition>

</tiles-definitions>

El archivo tiles.xml tiene un "mainTemplate.jsp" definido como la definición base. Cree un archivo "mainTemplate.jsp" que tenga el diseño html principal. Los archivos tienen "tiles: insertAttribute", que define las piezas del diseño base que se pueden anular en cada vista.

<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>
    <tiles:insertAttribute name="title" ignore="true"></tiles:insertAttribute>
</title>
</head>
<body>
<table border="1" cellpadding="2" cellspacing="2" align="left">
    <tr>
        <td colspan="2" align="center">
            <tiles:insertAttribute name="header"></tiles:insertAttribute>
        </td>
    </tr>
    <tr>
        <td>
            <tiles:insertAttribute name="menu"></tiles:insertAttribute>
        </td>
        <td>
            <tiles:insertAttribute name="body"></tiles:insertAttribute>
        </td>
    </tr>
    <tr>
        <td colspan="2"  align="center">
            <tiles:insertAttribute name="footer"></tiles:insertAttribute>
        </td>
    </tr>
</table>
</body>
</html>
Al final, deberías terminar con una estructura de archivos como esta

Respuestas a la pregunta(2)

Su respuesta a la pregunta