2011-08-11 11 views
5

Tôi tự hỏi nếu nó có thể có một if/else với Apache Tiles 2 (hoặc JSTL tham chiếu đến một thuộc tính Tiles, có thể hoạt động). Về cơ bản, tôi muốn điều này:Gạch Apache Nếu/Khác

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

<put-attribute name="showSecondDiv" value="true" type="string" /> trong XML gạch. Động lực là tôi muốn tái sử dụng JSP này ở một số nơi, một số muốn hiển thị cả hai div, những người khác chỉ muốn hiển thị một.

Trả lời

3

SỬ DỤNG JSTL
dụ:

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

Liệu tham chiếu đó có thuộc tính được khai báo trong Gạch XML của tôi không? – Nik

+0

tilesAdditionalTitle đây là tên thuộc tính – Nook

+0

Ok, và phần 'requestScope []' là gì? – Nik

1

Bạn có thể sử dụng Tag importAttribute cho if/else điều kiệ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> 

Nếu bạn không muốn hiển thị, sau đó thiết lập <put-attribute name="showSideBar" value=""/> trong file layout.xml.