c: import или c: url - укажите значение тайм-аута - PullRequest
4 голосов
/ 17 декабря 2008

Я хотел бы использовать c: import или c: url для захвата содержимого страницы (adserver). Кроме того, мне нужно указать тайм-аут, и если время ожидания вызова или страница недоступны, мне нужно вернуть текст по умолчанию в качестве значения.

Есть ли для этого тег jstl lib? Или мне нужно создать свой собственный?

1 Ответ

4 голосов
/ 25 февраля 2009

Вид.

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>

Если импорт происходит, тогда он работает как задумано, но если что-то (что-то) идет не так, то отображается страница с вашей ошибкой.

Вы можете написать свой собственный тег импорта, но он инкапсулирует это, но это немало работы по сравнению с этим решением.

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