2011-08-11 17 views
5

Me pregunto si es posible tener un if/else con Apache Tiles 2 (o JSTL que haga referencia a un atributo Tiles, que funcionaría). Básicamente, quiero esto:Apache Tiles If/Else

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 
<%@ taglib uri="http://tiles.apache.org/tags-tiles" prefix="tiles"%> 
<div> 
    <!-- Some stuff here --> 
</div> 
<tiles:if condition="showSecondDiv == 'true'"> 
    <div> 
     <!-- Some second stuff here --> 
    </div> 
</tiles:if> 

No es <put-attribute name="showSecondDiv" value="true" type="string" /> en el XML Azulejos. La motivación es que quiero reutilizar este JSP en varios lugares, algunos que quieren mostrar ambos divs, otros que solo quieren mostrar uno.

Respuesta

3

USO JSTL
ejemplo:

 <c:if test="${!empty tilesAdditionalTitle}"> 
     <fmt:param value="${requestScope[tilesAdditionalTitle]}" /> 
    </c:if> 
+0

¿Hará eso referencia al atributo declarado en mi XML Tiles? – Nik

+0

tilesAdditionalTitle este es el nombre del atributo – Nook

+0

Ok, y ¿qué es la parte 'requestScope []'? – Nik

1

Se puede utilizar para Tag importAttributeif/else condición.

layout.xml

<tiles-definitions> 
    <definition name="base" template="/WEB-INF/view/template.jsp"> 
     <put-attribute name="header" value="/WEB-INF/view/header.jsp" /> 
     <put-attribute name="footer" value="/WEB-INF/view/footer.jsp" /> 
     <put-attribute name="sidebar" value="/WEB-INF/view/sidebar.jsp" /> 
     <put-attribute name="showSideBar" value="Y" /> 
    </definition> 
</tiles-definitions> 

template.jsp

<body> 
    <t:importAttribute name="showSideBar"/> 

    <t:insertAttribute name="header"/><br/> 

    <div class="uk-container uk-container-center"> 
     <div class="uk-grid"> 

      <c:if test="${showSideBar == 'Y'}"> 
       <div class="uk-width-1-3"> 
        <t:insertAttribute name="sidebar"/> 
       </div> 
      </c:if> 

      <div class="${showSideBar == 'Y' ? 'uk-width-2-3' : 'uk-width-1-1'}"> 
       <t:insertAttribute name="body"/> 
      </div> 
     </div> 
    </div> 

    <%@include file="/WEB-INF/view/common/loading.jsp"%> 

    <t:insertAttribute name="footer"/> 

</body> 

Si no desea mostrar, a continuación, establezca <put-attribute name="showSideBar" value=""/> en el archivo layout.xml.

Cuestiones relacionadas