在JSP中包含/导入文件之前,如何检查文件是否存在?

在JSP中包含/导入文件之前,如何检查文件是否存在?,jsp,import,jstl,file-exists,Jsp,Import,Jstl,File Exists,假设requestScope.importMe需要一个JSP文件的路径 <c:choose> <c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }"> <c:import url="${requestScope.importMe}" /> ... </c:choose> ... 在尝试

假设requestScope.importMe需要一个JSP文件的路径

<c:choose>
    <c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }">
    <c:import url="${requestScope.importMe}" />   
    ...
</c:choose>

...
在尝试包含该文件之前,如何检查该文件是否存在,以便不会引发错误

我更喜欢使用JSTL标记的解决方案。

将其放在标记中。它会抓住任何扔给你的东西


错误:${e.message}

然而,我必须承认我不喜欢
c:catch
方法。它滥用异常来控制流量。如果可以的话,可以在servlet中完成这项工作,也可以借助
File\exists()
(和
ServletContext\getRealPath()
)。

@BalusC非常聪明,可能回答了这个问题

然而,完整地说,标准JSTL中的任何内容都不能满足您的要求,但是您当然可以创建自己的EL函数来进行检查。显然,您需要为它编写Java,但它不在JSP中内联


J2EE 1.4教程提供了一个关于创建自己的EL函数的详细说明。

关于创建自己的java的详细信息将在这个问题中解释@威尔哈顿:上面的章节链接不再深入到你所指的章节(我想)。如果问题不太大,你能把答案的主要部分包含在问题中吗?或者修复链接?嗨@BalusC!我也在寻找一个类似于您的答案中给出的实现。我在这么多帖子上搜索,但我认为你的答案是实现我需求的最简单的方法,我不确定是否要对已经提出的问题重新提问。我需要在jstl中导入一个动态url:我尝试加载一个特定区域的url(例如:./3/myJspx.jspx,如果找不到文件,它将返回到默认区域jspx:./myJspx.jspx..考虑到您的答案经过了这么长时间,同时,您是否提出了任何其他解决方案或得到了任何其他提示?
<c:catch var="e">
    <c:import url="${url}" />
</c:catch>
<c:if test="${!empty e}">
    Error: ${e.message}
</c:if>