Что-то вроде.
c:import открывает сокет на сервере и просто возвращает то, что делает соединение (в вашем случае необработанный html). Если сервер вернет страницу с ошибкой 404, то это то, что будет отображаться, а 500, и вы получите для этого страницу с ошибкой.
Поскольку это сокет, он имеет доступ ко всем ошибкам сокета. Для тайм-аута:
java.net.ConnectException: Operation timed out
Неизвестный хост:
java.net.UnknownHostException: www.googasdasdasdassdle.com
Это означает, что вы можете обернуть импорт в оператор catch и обработать его прямо на странице.
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<c:catch var="socketExceptionVariable">
<c:import url="www.googasdasdasdassdle.com"/>
</c:catch>
<c:if test="${socketExceptionVariable != null}">
<p>There was an error here</p>
<c:out value="${socketExceptionVariable}"/>
</c:if>
Если импорт происходит, то он работает так, как задумано, но если что-то (что-то) пойдет не так, отобразится ваша страница с ошибкой.
Вы можете написать свой собственный тег импорта, но это инкапсулирует это, но это довольно сложная работа по сравнению с этим решением.
person
Doug Miller
schedule
25.02.2009