2011-08-11 59 views
5

我想知道是否有可能具有Apache Tiles 2(或引用Tiles屬性的JSTL)的if/else。基本上,我想這樣: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> 

Tiles XML中有<put-attribute name="showSecondDiv" value="true" type="string" />。動機是我想在很多地方重用這個JSP,有些想要顯示這兩個div,而另一些只想顯示它。

回答

3

使用JSTL
例如:

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

是否會引用在我的Tiles XML中聲明的屬性? – Nik

+0

tilesAdditionalTitle這是屬性的名稱 – Nook

+0

好吧,requestScope []'部分是什麼? – Nik

1

可以使用Tag importAttributeif/else條件。

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> 

如果你不希望顯示,然後在layout.xml文件中設置<put-attribute name="showSideBar" value=""/>