2013-06-30 56 views
1

我檢查當前URL是否以'/'結尾,那麼變量slash爲空。否則slash是'/'。JSTL代碼不適用於Apache Tiles

<c:set var="slash" value="/"/> 
<c:set var="uri" value="${requestScope['javax.servlet.forward.request_uri']}"/> 
<c:if test="${fn:substring(uri, fn:length(uri)-1, fn:length(uri)) == '/'}"> 
    <c:set var="slash" value=""/> 
</c:if> 

接下來,立足變量slashuri,一些文本附加到當前URL和新的鏈接建設。

<a href="${uri}${slash}${cd.toString()}/">${cd.toString()}</a> 

當代碼位於構建新URL的同一頁上時,它正在工作。當我申請Apache的瓷磚,第一代碼放入main.jsp中:

<body> 
<c:set var="slash" value="/"/> 
<c:set var="uri" value="${requestScope['javax.servlet.forward.request_uri']}"/> 
<c:if test="${fn:substring(uri, fn:length(uri)-1, fn:length(uri)) == '/'}"> 
    <c:set var="slash" value=""/> 
</c:if> 

<div id="headerId"> 
    <tiles:insertAttribute name="header" /> 
</div> 
<div id="bodyId"> 
    <tiles:insertAttribute name="content" /> 
</div> 
</body> 

和鏈接是建立content.jsp:

<a href="${uri}${slash}${cd.toString()}/">${cd.toString()}</a> 

但content.jsp變量urislash是空的。

回答

2

這不是用瓷磚做的。即使使用< jsp:include ... />

< c:set ... />默認情況下會將變量放入頁面範圍。 您需要執行以下操作才能在下一頁中使用這些變量

<c:set var="slash" value="/" scope="request"/> 
相關問題