Как вы можете проверить, существует ли файл, прежде чем включать / импортировать его в JSP? - PullRequest
16 голосов
/ 12 апреля 2010

Предполагая, что requestScope.importMe ожидает путь к файлу JSP

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

Как проверить, существует ли файл, прежде чем пытаться включить его, чтобы не выдавалась ошибка?

Я бы предпочел решение с использованием тегов JSTL.

Ответы [ 2 ]

22 голосов
/ 13 апреля 2010

Поместите его в тег 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. Это злоупотребление исключениями для управления потоком. Если вы можете, лучше сделать эту работу в сервлете или JavaBean вместо этого с помощью File#exists()ServletContext#getRealPath()).

4 голосов
/ 13 апреля 2010

@ BalusC довольно умен и, вероятно, отвечает на вопрос.

Однако, чтобы завершить, ничего в стандартном JSTL не будет делать то, что вы хотите, но вы, безусловно, можете создать свои собственные EL-функции, которые вы можете использовать для проверки. Очевидно, что для этого вам нужно написать Java, но она не встроена в ваши JSP.

В руководстве по J2EE 1.4 есть раздел по созданию собственных функций EL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...