在 JSP 中包含/导入文件之前,如何检查文件是不是存在?
Posted
技术标签:
【中文标题】在 JSP 中包含/导入文件之前,如何检查文件是不是存在?【英文标题】:How can you check if a file exists before including/importing it in JSP?在 JSP 中包含/导入文件之前,如何检查文件是否存在? 【发布时间】:2011-02-07 03:42:39 【问题描述】:假设 requestScope.importMe 需要一个 JSP 文件的路径
<c:choose>
<c:when test="$!empty requestScope.importMe && fileExists(requestScope.importMe) ">
<c:import url="$requestScope.importMe" />
...
</c:choose>
如何在尝试包含文件之前检查文件是否存在,以免引发错误?
我更喜欢使用 JSTL 标签的解决方案。
【问题讨论】:
【参考方案1】:把它放在c:catch
标签中。它会为你捕获任何抛出的Exception
。
<c:catch var="e">
<c:import url="$url" />
</c:catch>
<c:if test="$!empty e">
Error: $e.message
</c:if>
但我必须承认我不喜欢c:catch
方法。它滥用异常来控制流程。如果可以的话,不如在 servlet 或 JavaBean 中完成这项工作,而不是在 File#exists()
(和 ServletContext#getRealPath()
)的帮助下。
【讨论】:
嗨@BalusC!我也在寻找你的答案中给出的那种实现。我在 SO 帖子上进行搜索,但我认为您的回答是实现我的需求的最简单方法,我不确定对已经提出的问题重新提出问题。我需要在 jstl 中导入动态 url:我尝试加载特定区域的 url(例如:./3/myJspx.jspx,如果找不到文件,它会回退到默认区域 jspx:./myJspx .jspx .. 鉴于您的答案已经过去了很长时间,同时,您是否提出了任何其他解决方案或有任何其他提示?【参考方案2】:@BalusC 很聪明,很可能回答了这个问题。
但是,要完整地说,标准 JSTL 中的任何内容都不能满足您的要求,但您当然可以创建自己的 EL 函数来进行检查。显然,您需要为它编写 Java,但它不是内联在您的 JSP 中。
J2EE 1.4 教程中有一个section 用于创建您自己的 EL 函数。
【讨论】:
这个***问题解释了制作你自己的java的细节......***.com/questions/16788790/… @WillHartung:上面的部分链接不再深入到您所指的部分(我认为)。如果不是太大,您能否将答案的主要部分包含在问题中,或者修复链接?以上是关于在 JSP 中包含/导入文件之前,如何检查文件是不是存在?的主要内容,如果未能解决你的问题,请参考以下文章
XSD 检查所有元素是不是在整个 XML 文件中包含相同的值
在 Rails 中如何在使用 javascript_include_tag 之前检查 javascript 文件是不是存在