2014-10-13 2 views
-1

Я пишу некоторые пользовательские теги в библиотеке тегов (Java, а не фрагменты JSP).Какой шаблон дизайна следует использовать для моего пользовательского тега JSP, чтобы сообщить об ошибке

Некоторые из них зависят от внутренних служб для возврата данных.

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

Примечание. Это не MVC. Это относится к приложениям типа Model-1, ориентированным на страницы.

Архитектурно, какой лучший, рекомендуемый или установленный шаблон дизайна для тега сообщать об ошибке?

+0

MVC design pattern – SkorpEN

ответ

1

То, о чем вы просите, почти невозможно, и нарушает принцип MVC. С принципом MVC, вот что вы делаете:

  • контроллера получают данные от серверных услуг и хранит их в запросе атрибутами
  • если есть проблема, контроллер может отобразить страницу ошибки, или может бросить исключение, которое приведет к отправке ошибки в браузер
  • , если нет проблем, контроллер отправляет представление, которое должно только генерировать HTML из данных, хранящихся в запросе. Здесь нет риска ошибки (кроме ошибок).

Если тэг JSP получает данные из ненадежного бэкэнд-сервиса, он делает это, пока представление получает визуализацию и передает HTML в браузер. Статус ответа HTTP (200) уже отправлен в это время, а исключение, созданное тегом JSP, приведет к сбою страницы. Слишком поздно отображать красивую страницу ошибок или отправить сообщение об ошибке 500.

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

Если бэкэнд является надежным, но вас беспокоит неправильное использование тегов (например, ошибок), выведите исключение с явным сообщением об ошибке и запишите его, и разработчики должны иметь возможность определить, что проблема есть.

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