java - 为什么 servlet 请求在 portlet API 中不可用

标签 java portlet

Portlet API deos 不提供对封闭的 servlet 请求和响应对象的任何引用。我知道这不是与用户交互的首选模型,但删除所有访问权限似乎很严厉。

据我所知,对于 portlet 驱动的与用户的交互,您需要使用 portlet URL,并让 portlet 容器管理所有的复杂性。

但是,如果您有许多基本上显示相同数据的变体的 portlet,那么它们能够使用封闭的请求来驱动数据是有意义的。

我们最终使用 Liferay 特定调用来获取请求,这一切似乎都按照我们的意愿进行。

但是我确实感到内疚。

所以我的问题实际上是,禁止是否有根本的深层原因,或者只是为了强制作者对 API 环境的看法?

最佳答案

Portlet 并不直接运行在Servlet 容器中,而是在所谓的Portlet 容器中运行。

您应该能够访问相应的信息:PortletRequestPortletResponsePortletContext

原因是同一 portlet 的两个实例可以在同一页面中彼此相邻运行,但仍然与其自己的生命周期隔离。该门户将为您透明地“多路复用”,并且将从 servlet 世界转换为 portlet 世界。 Portlet 桥也可用于使用非 Portlet 技术(例如 JSF)开发 Portlet。我同意所有这些通常使用起来(非常)复杂(因为有许多可用的框架和实现),但是当您考虑它在概念上如何工作时,它是 quite nice

具体细节取决于您选择开发 portlet 的技术。但我觉得应该有一种方法可以使用 portlet API 来做你想做的事情。

关于java - 为什么 servlet 请求在 portlet API 中不可用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2826261/

相关文章:

java - 如何在 Portlet 实例的所有用户之间共享数据?

jquery - 在 WebSphere Portal 6.1 中对 GenericPortlet.serveResource() 的 Ajax 调用

java - 如何通过liferay中的portlet conf选项卡修改属性文件?

grails - Liferay Portlet 错误 - "NoSuchResourceActionException <Portlet>_WAR_<PortletApp>#VIEW"

java - 如何根据文档中的泛型类型使用 MongoRepository 存储到不同的集合

java - 如何将 JAXB 类实例编码为其父类(super class)

java - 从cli启动并杀死hadoop任务

java - 我如何设置我的环境来构建我自己的 ril 库?

java - 访问类数组字段

gradle - Gradle构建Liferay Hello World Portlet