2011-09-30 10 views
6

Tengo un problema con el resorte 3 y los mosaicos 2.2.2. No puedo mostrar un título de página dinámico. Estos son mis config/archivos JSP:No puedo mostrar el título dinámico de la página utilizando el resorte 3 y los mosaicos de apache 2.2

layout.jsp archivo de configuración

<%@ page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 
<%@ taglib prefix="tiles" uri="http://tiles.apache.org/tags-tiles"%> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> 
    <head> 
     <title><tiles:getAsString name="title" ignore="true"/></title> 
    </head> 

    <body> 
     <tiles:insertAttribute name="header" /> 
     <div id="content-outer"> 
      <div id="content-wrapper" class="container_16"> 
       <tiles:insertAttribute name="body" /> 
       <tiles:insertAttribute name="menu" /> 
      </div> 
     </div> 
     <tiles:insertAttribute name="footer" /> 
    </body> 
</html> 

primavera:

<bean id="tilesviewResolver" 
    class="org.springframework.web.servlet.view.tiles2.TilesViewResolver"> 
    <property name="order" value="0" /> 
    <property name="requestContextAttribute" value="requestContext" /> 
    <property name="viewClass" 
     value="org.springframework.web.servlet.view.tiles2.TilesView" /> 
</bean> 
<bean id="tilesConfigurer" 
    class="org.springframework.web.servlet.view.tiles2.TilesConfigurer"> 
    <property name="definitions"> 
     <list> 
      <value>/WEB-INF/tiles.xml</value> 
     </list> 
    </property> 
    <property name="tilesProperties"> 
     <props> 
      <prop key="org.apache.tiles.evaluator.AttributeEvaluator">org.apache.tiles.evaluator.el.ELAttributeEvaluator 
      </prop> 
     </props> 
    </property> 
</bean> 

tiles.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="base.definition" template="/WEB-INF/views/layout.jsp"> 
     <put-attribute name="title" value="" /> 
     <put-attribute name="header" value="/WEB-INF/views/inc/header.jsp" /> 
     <put-attribute name="menu" value="/WEB-INF/views/inc/menu.jsp" /> 
     <put-attribute name="body" value="" /> 
     <put-attribute name="footer" value="/WEB-INF/views/inc/footer.jsp" /> 
    </definition> 

    <definition name="item/itemDetail" extends="base.definition"> 
     <put-attribute name="title" value="%{title}"/> 
     <put-attribute name="body" value="/WEB-INF/views/item/itemDetail.jsp" /> 
    </definition> 

</tiles-definitions> 

el título de la página no se reemplaza con el valor del título representado por el controlador, en cambio% {title}.

Gracias de antemano

+0

¿Podría publicar el controlador? – Ralph

+1

está usando una función de mosaicos que nunca noté, ¿puede agregar una sugerencia a la parte de la documentación que explica cómo se puede usar la variable "título" en una definición de mosaicos? – Ralph

Respuesta

6

creo que su definición de página debe tener este aspecto (tenga en cuenta el atributo 'expresión' y '$' en lugar de '%'):

<definition name="item/itemDetail" extends="base.definition"> 
    <put-attribute name="title" expression="${title}"/> 
    <put-attribute name="body" value="/WEB-INF/views/item/itemDetail.jsp" /> 
</definition> 

¿Estas seguro que hay un atributo llamado $ {title} en un alcance relevante? ¿Has intentado representar el valor de $ {title} directamente en la página itemDetail.jsp?

Aquí está la documentación relevante, tiles usa el soporte EL del contenedor de servlet para esto: http://tiles.apache.org/2.1/framework/tutorial/advanced/el-support.html.

+0

expression = "$ {title}" - ¡He estado buscando esto por horas! ¡muchas gracias! – ducin

Cuestiones relacionadas