2011-09-30 14 views
6

Ho un problema con la spring 3 e le tiles 2.2.2. Non riesco a visualizzare un titolo di pagina dinamico. Questi sono i miei config/file JSP:Non riesco a visualizzare il titolo di una pagina dinamica usando spring 3 e apache tiles 2.2

layout.jsp file di configurazione

<%@ 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> 

il titolo della pagina non viene sostituito con il valore del titolo visualizzato dal controller, invece% {title}.

Grazie in anticipo

+0

Potresti postare il controller? – Ralph

+1

stai usando una funzione di tile che non ho mai notato, puoi aggiungere un suggerimento alla parte della documentazione che spiega come la variabile "title" può essere usata in una definizione di tile. – Ralph

risposta

6

penso che la definizione della pagina dovrebbe essere simile a questa (si noti l'attributo 'espressione' e '$' invece di '%'):

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

Sei sicuro che c'è un attributo chiamato $ {title} in un ambito pertinente? Hai provato a rendere il valore di $ {title} direttamente nella pagina itemDetail.jsp?

Ecco la documentazione pertinente, le tessere utilizzano il supporto EL del contenitore servlet per questo: http://tiles.apache.org/2.1/framework/tutorial/advanced/el-support.html.

+0

expression = "$ {title}" - Ho cercato questo per ore !!! grazie mille! – ducin

Problemi correlati