Подтвердить что ты не робот

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

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

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

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

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

4b9b3361

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

Ответ 2

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

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

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