Foros del Web » Programación para mayores de 30 ;) » Java »

Error usando el complemento Tiles

Estas en el tema de Error usando el complemento Tiles en el foro de Java en Foros del Web. Hola, Estoy utilizando el complemento Tiles de Struts2 y hasta hoy no he tenido ningún problema. No se si por cansancio estoy dejando pasar algo ...
  #1 (permalink)  
Antiguo 27/05/2013, 14:01
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 5 meses
Puntos: 3
Error usando el complemento Tiles

Hola,

Estoy utilizando el complemento Tiles de Struts2 y hasta hoy no he tenido ningún problema. No se si por cansancio estoy dejando pasar algo por alto pero es my extraño.

Pongo el código

menuLayout.jsp:

Código:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<%@ 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=ISO-8859-1">

<title>Adges</title>
<link type="text/css" href="Styles/styleMenuLayout.css" media="screen" rel="stylesheet"> 
</head>
<body>

 <div id="barraSuperior">
 	<tiles:insertAttribute name="barraSuperior" />
 </div>
 
 <div id="menuIzquierda">
 	<div id="contenedorMenuIzquierda">
 		<tiles:insertAttribute name="menuIzquierda" />
	</div>
 </div>
  
 <div id="Centro">
	<div id="contenedorCentro">
		<tiles:insertAttribute name="centro" />
	</div>
 </div>
 
 <div id="menuDerecha">
 	<div id="contenedorMenuDerecha">
 		<tiles:insertAttribute name="menuDerecha" />
	</div>
 </div>

</body>
</html>
tiles.xml:
Código:
<?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="/estructura/baseLayout.jsp">
      <put-attribute name="eventos" value="/estructura/eventos.jsp"/>
   </definition>
  
  <definition name="gestor" extends="baseLayout">
  	  <put-attribute name="menuData"   value="/estructura/menuLayout.jsp"/>          
  </definition>
 
  <definition name="barraSuperior" extends="gestor">
      <put-attribute name="barraSuperior"  value="/estructura/barraSuperior.jsp"/>
  </definition>
 
  <definition name="menuIzquierda" extends="gestor">
      <put-attribute name="menuIzquierda"  value="/estructura/menuIzquierda.jsp"/>
  </definition>
  
    <definition name="centro" extends="gestor">
      <put-attribute name="centro"  value="/estructura/menuDerecha.jsp"/>
  </definition>
  
   <definition name="menuDerecha" extends="gestor">
      <put-attribute name="menuDerecha"  value="/estructura/menuDerecha.jsp"/>
  </definition>
    
  <definition name="administrador" extends="baseLayout">
      <put-attribute name="menuData"  value="/estructura/menuAdministrador.jsp"/>
  </definition>  
 
 
</tiles-definitions>
El error que me da es el que se ve en la imagen pero lo raro es que se puede ver que existe el atributo, como se ve en esta otra imagen y en el código.

Teniendo en cuenta que el archivo tiles.xml funciona con los atributos eventos y menuData, ¿en que dónde fallo?

Saludos
  #2 (permalink)  
Antiguo 27/05/2013, 15:11
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Error usando el complemento Tiles

Muy buenas!!!

veamos... creo que te estas liando un poco...
El menuLayout.jsp que tu tienes, seria la base del layout... que luego tienes que definir en el tiles.xml

es decir en el tiles.xml tendrias que poner lo siguiente:

Código XML:
Ver original
  1. <definition name="baseLayout" template="/estructura/menuLayout.jsp">
  2.       <put-attribute name="barraSuperior" value="/estructura/barraSuperior.jsp"/>
  3.       <put-attribute name="menuIzquierda" value="/estructura/menuIzquierda.jsp"/>
  4.       <put-attribute name="centro" value="/estructura/centro.jsp"/>
  5.       <put-attribute name="menuDerecha" value="/estructura/menuDerecha.jsp"/>
  6.    </definition>

Es decir tienes que tener una jsp que represente la estructura del Layout... y luego ya la vas modificando con mas definiciones, por ejemplo asi:


Código XML:
Ver original
  1. <definition name="centro" extends="gestor">
  2.       <put name="centro"  value="/estructura/AQUIOTRACOSA.jsp"/>
  3.   </definition>

Ojo al dato.. hay que poner solo put y no put-attribute, para que te lo sustituya, lo que estas haciendo al hacer esto es que cuando se te muestro la pagina al llamar a "centro" te saldra la siguiente estructura:

barraSuperior
menuIzquierda
AQUIOTRACOSA //esto es lo q has cambiado en el baseLayout
menuDerecha
  #3 (permalink)  
Antiguo 28/05/2013, 00:49
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 5 meses
Puntos: 3
Respuesta: Error usando el complemento Tiles

Hola rgf1987,

Lo de la baseLayout si lo tengo claro, pero probablemente lo que yo quiero hacer no se puede. Pongo un pequeño esquema para intentar explicarlo.

Quiero que el baseLayout en la parte de arriba que yo llamo eventos carge una jsp y lo hace. Luego en la parte de abajo menuData, debería de cargar otra plantilla, la menuLayout para poder seguir poniendo más jsp.

Saludos
  #4 (permalink)  
Antiguo 28/05/2013, 04:48
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Error usando el complemento Tiles

La verdad, nose si se puede incluir un layout dentro de otro porque nunca lo he probado.

De todos modos yo no lo haria como tu, para poner la parte que tu llamas Eventos simplemente crearia otra seccion en mi layout asi:

Código XML:
Ver original
  1. <definition name="baseLayout" template="/estructura/menuLayout.jsp">
  2.           <put-attribute name="EVENTOS" value="/estructura/EVENTOS.jsp"/>
  3.           <put-attribute name="barraSuperior" value="/estructura/barraSuperior.jsp"/>
  4.           <put-attribute name="menuIzquierda" value="/estructura/menuIzquierda.jsp"/>
  5.           <put-attribute name="centro" value="/estructura/centro.jsp"/>
  6.           <put-attribute name="menuDerecha" value="/estructura/menuDerecha.jsp"/>
  7.        </definition>

De todos modos la estructura de tu baseLayout como te lo comente en el post anterior la tenias mal y por eso te daba ese error que mencionabas al principio.
  #5 (permalink)  
Antiguo 28/05/2013, 04:55
Avatar de fpalomar  
Fecha de Ingreso: noviembre-2003
Mensajes: 123
Antigüedad: 20 años, 5 meses
Puntos: 3
Respuesta: Error usando el complemento Tiles

Hola de nuevo rgf1987 ,

Muchas gracias por tu tiempo. Finalmente he consiguido hacer un pequeño ejemplo que funcione,
ahora ese ejemplo me ha de servir de guia para intengrar en mi proyecto lo que busco.

Tu último mensaje és muy correcto, lo que pasa es que Struts2 + un POJO que controla las actions
y seleccionan gestor o adminsitrador segun el login que se compruba con un acceso a datos delegado
en hibernate, por eso no lo he hecho com me indicas en el mensaje.

Un saludo
  #6 (permalink)  
Antiguo 28/05/2013, 05:39
Avatar de rgf1987  
Fecha de Ingreso: diciembre-2012
Ubicación: Asturias
Mensajes: 269
Antigüedad: 11 años, 4 meses
Puntos: 22
Respuesta: Error usando el complemento Tiles

En ese caso necesitas varios baseLayout, uno para cuando el usuario se conecte como Gestor y otro para cuando se conecte como Adminitrador.

Me alegro que te haya funcionado ya.

Suerte

Etiquetas: struts2
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 04:37.