2015-01-20 2 views
1

Я работал над приложением Spring MVC с настраиваемыми страницами ошибок, эти страницы возвращают общее сообщение об ошибке и трассировку стека как комментарий HTML. В настоящее время я разрабатываю автономные функции этого приложения, используя Appcache HTML5. Мой манифест что-то вроде этого:страницы приложений и пользовательских ошибок

CACHE MANIFEST 
CACHE: 
... my explicit entries (not relevant) ... 

FALLBACK: 
... some fallback entries (not relevant) ... 
<!-- This next line is relevant --!> 
/pageNotFoundOffline.html 

SETTINGS: 
prefer-online 

который должен обслуживать ранее кэшированные 404 страницы, когда пользователь не может подключиться к серверу, проблема заключается в том, что она также служит этой страницы 404, когда происходит ошибка, что делает совершенно бесполезной страницу пользовательской ошибки, уже реализованную в приложении.

Почему я хочу это сделать? я хочу, чтобы всякий раз, когда пользователь пытается получить доступ к какой-либо странице в моем приложении, а запрос не работает с 404 (либо из-за отсутствия доступного интернет-соединения, либо из-за того, что серверы не работают), этот пользователь информируется о том, что запрос не выполнен, и он или она перенаправляется на наши автономные функции, также я хочу сообщить пользователю, когда он или она успешно достигли наших серверов, но произошла внутренняя ошибка (через страницу пользовательских ошибок).

Есть ли проблема с этой проблемой ?, то, что я хотел бы выполнить, - это кешированная страница 404, которая будет обслуживаться только тогда, когда есть исключение 404, а страница пользовательской ошибки, возвращаемая сервером для отображения, когда есть внутренняя ошибка.

ответ

0

Я боюсь, что это невозможно с помощью appcache - резервный перехват всех ошибок сервера. В specification for appcache говорится: «Если это приведет к перенаправлению на ресурс с другим источником (указывающим на невольный портал) или кодом состояния или эквивалентом 4xx или 5xx или с ошибками в сети (но не если пользователь отменил загрузку), затем вместо этого получить из кэша ресурс резервной записи, соответствующей резервному пространству имен f. Прервать эти шаги. "

Если вы можете использовать более современный способ делать вещи, я бы рекомендовал использовать это, поскольку это позволит вам делать то, что вы хотите.

Смежные вопросы