Portlet API deos 不提供对封闭的 servlet 请求和响应对象的任何引用。我知道这不是与用户交互的首选模型,但删除所有访问权限似乎很严厉。
据我所知,对于 portlet 驱动的与用户的交互,您需要使用 portlet URL,并让 portlet 容器管理所有的复杂性。
但是,如果您有许多基本上显示相同数据的变体的 portlet,那么它们能够使用封闭的请求来驱动数据是有意义的。
我们最终使用 Liferay 特定调用来获取请求,这一切似乎都按照我们的意愿进行。
但是我确实感到内疚。
所以我的问题实际上是,禁止是否有根本的深层原因,或者只是为了强制作者对 API 环境的看法?
最佳答案
Portlet 并不直接运行在Servlet 容器中,而是在所谓的Portlet 容器中运行。
您应该能够访问相应的信息:PortletRequest
、PortletResponse
和 PortletContext
。
原因是同一 portlet 的两个实例可以在同一页面中彼此相邻运行,但仍然与其自己的生命周期隔离。该门户将为您透明地“多路复用”,并且将从 servlet 世界转换为 portlet 世界。 Portlet 桥也可用于使用非 Portlet 技术(例如 JSF)开发 Portlet。我同意所有这些通常使用起来(非常)复杂(因为有许多可用的框架和实现),但是当您考虑它在概念上如何工作时,它是 quite nice 。
具体细节取决于您选择开发 portlet 的技术。但我觉得应该有一种方法可以使用 portlet API 来做你想做的事情。
关于java - 为什么 servlet 请求在 portlet API 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826261/