我想知道是否有可能有一个if / else与Apache Tiles 2(或JSTL引用Tiles属性,这将工作)。 基本上,我想这个:
<%@ 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,而另一些只想显示一个div。
使用JSTL
例:
<c:if test="${!empty tilesAdditionalTitle}"> <fmt:param value="${requestScope[tilesAdditionalTitle]}" /> </c:if>
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=""/>
。