JSP递归导入

时间:2013-04-19 02:39:43

标签: java jsp include jspinclude

我有一个主JSP文件,我想从我的web应用程序导入一组递归的匹配文件(它们是胡子模板)。

我想做这样的事情:

<jsp:include page="**/*.mustache"/>

<%@ include file="**/*.mustache" %>

有没有办法通过JSTL标签等来做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以将JSTL <c:import><c:param>一起使用,这与JSP中的上述import语句类似。 <c:import>标记提供了操作的所有功能,但也允许包含绝对URL。

我们还可以包含那些不属于当前Web应用程序但位于Web应用程序之外的内容或文件。因此,jstl <c:import><jsp:include>更有用。

通过以下语法

    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
   <c:import url = "yourPage.jsp">
<c:param name = "anyParameter" value = "<h1>Here is your value</h1>"/>

答案 1 :(得分:0)

我用一些hacky scriptlet解决了这个问题:

<%
String path = pageContext.getServletContext().getRealPath("/");
Collection<String> paths = new ArrayList<String>();
for (File file : FileUtils.listFiles(new File(path), new String[] { "ext" }, true)) {
    //Make the path relative
    paths.add(file.getAbsolutePath().substring(path.length()));
}
%>
<c:forEach items="<%=paths%>" var="path">
    <jsp:include page="../${path}"/>
</c:forEach>