假设 requestScope.importMe 期待JSP文件的路径
<c:choose>
<c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }">
<c:import url="${requestScope.importMe}" />
...
</c:choose>
如何在尝试包含文件之前检查文件是否存在,以免引发错误?
我更喜欢使用JSTL标签的解决方案。
答案 0 :(得分:22)
将其放在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
方法。它滥用例外来控制流量。如果可以的话,而是在File#exists()
(和ServletContext#getRealPath()
)的帮助下,在servlet或JavaBean中完成这项工作。
答案 1 :(得分:4)
@BalusC非常聪明,可能会回答这个问题。
但是,要完成,标准JSTL中的任何内容都不会执行您想要的操作,但您当然可以创建自己的EL函数来进行检查。显然你需要为它编写Java,但它不在你的JSP中内联。
J2EE 1.4教程有section创建自己的EL函数。