假设requestScope.importMe正在期待一个JSP文件的路径 c:choose c:when test="${!empty requestScope.importMe fileExists(requestScope.importMe) }" c:import url="${requestScope.importMe}" / .../c:choose 在尝试包含它之前,如何
<c:choose>
<c:when test="${!empty requestScope.importMe && fileExists(requestScope.importMe) }">
<c:import url="${requestScope.importMe}" />
...
</c:choose>
在尝试包含它之前,如何检查文件是否存在,以便不会抛出错误?
我更喜欢使用JSTL标签的解决方案。
把它放在一个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())的帮助下。
