Почему запрос сервлета недоступен в API портлета

API-интерфейсы портлета не предоставляют никаких ссылок на вложенные объекты запроса и ответа сервлета. Я знаю, что это не предпочтительная модель взаимодействия с пользователем, но кажется драконовским, чтобы удалить весь доступ.

Я понимаю, что для взаимодействия с пользователем на основе портлетов вы хотите использовать URL-адреса портлетов и позволить контейнеру портлетов управлять всей сложностью.

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

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

Однако я чувствую вину.

Таким образом, мой вопрос на самом деле: есть ли глубокая причина запрета, или это просто для того, чтобы обеспечить авторский взгляд на среду API?

1 ответ

Портлет работает не прямо в контейнере сервлетов, а в том, что называется контейнером портлетов.

Вы должны иметь доступ к соответствующей информации, PortletRequest, PortletResponse, а также PortletContext,

Причина в том, что два экземпляра одного и того же портлета могут работать рядом друг с другом на одной и той же странице, но при этом быть изолированными в своем жизненном цикле. Портал будет "мультиплексировать" это прозрачно для вас, и он будет конвертировать из мира сервлетов в мир портлетов. Также доступны мосты портлетов для разработки портлетов с использованием технологий, не связанных с портлетами (например, JSF). Я согласен, что все это обычно (очень) сложно использовать (из-за множества доступных структур и реализаций), но когда вы думаете о том, как это работает концептуально, это довольно приятно.

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

Другие вопросы по тегам