2012-10-13 60 views
2

我有很多jsp文件row1.jsp, row2.jsp, row3.jsp, ..., row10.jsp,我想在我的主jsp頁面中包含這些文件。隨機包含JSP

這裏的竅門是,我想隨機它們是如何呈現的,所以有時它們包含這樣:

<%@include file="/index-rows/row1.jspf"%> 
<%@include file="/index-rows/row2.jspf"%> 
<%@include file="/index-rows/row3.jspf"%> 

等次:

<%@include file="/index-rows/row2.jspf"%> 
<%@include file="/index-rows/row1.jspf"%> 
<%@include file="/index-rows/row3.jspf"%> 

我嘗試以下,但我意識到我不能在<%@include>標籤內添加<%= %>

<% 
HashMap<String, String> foo = ...some code... 
String[] pages = { "row1.jspf", "row2.jspf", "row3.jspf" }; 
for (String p : pages) { 
    %><%@include file="/index-rows/<%= p %>"%><% 
} 
%> 

條件:包含文件使用變量foo

回答

4

<%@ include %>是一個靜態的include指令。這意味着它在編譯時被評估,因此不能使用動態文件名。

使用dynamic include做你想做的事:<jsp:include page="..."/>。不過,您需要將foo存儲在包含頁面的請求屬性中才能使用它。

請學習如何使用JSP EL。 Scriptlet不應該再使用了。

+0

謝謝你的回答,並建議我去拿JSP EL。 – tommi