2011-08-11 3 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> 

타일 XML에 <put-attribute name="showSecondDiv" value="true" type="string" />이있다. 동기 부여는 여러 곳에서이 JSP를 재사용하고 싶습니다. 일부는 div를 표시하고 다른 일부는 하나만 표시하려고합니다. JSTL
예를 사용

답변

3

:

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

내 타일 XML에 선언 된 속성을 참조 할 예정입니까? – Nik

+0

tilesAdditionalTitle이 속성의 이름은 – Nook

+0

입니다. 'requestScope []'부분은 무엇입니까? – Nik

1

당신은 if/else 조건 Tag importAttribute를 사용할 수 있습니다.

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=""/>을 설정합니다.

관련 문제