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

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

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

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

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

16
задан qodeninja 21 January 2014 в 21:54
поделиться

2 ответа

Поместите его в тег c: catch . Он перехватит любое выброшенное исключение за вас.

<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 () ).

22
ответ дан 30 November 2019 в 21:28
поделиться

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

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

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

4
ответ дан 30 November 2019 в 21:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: