java - 如何使具有相同支持类的 portlet 显示不同的信息?

标签 java portlet jetspeed2

我有一个包含 x 个项目的列表,以及一个包含 x 个 portlet 的页面。页面上的每个 portlet 都具有相同的支持类并可以访问我的列表,并且显示的内容会根据选择的列表项而变化。编辑模式允许用户选择要显示的项目,我将他们选择的项目存储在 portlet 后面的首选项对象中。

就目前情况而言,每个 Portlet 最初都会显示列表中的第一项,直到用户编辑该 Portlet 并选择不同的项目为止。不过,我希望每个 portlet 最初都显示不同的项目。

看来我必须根据位置计算要显示的项目。如果我有 2 列和 6 行,那么第 2 列第 4 行中的项目将显示项目 8((行 - 1)* #columns + 列)。这种方法效果很好,只是当用户开始移动 portlet 时,portlet 值会随着位置而变化。

我想“锁定”最初选择的项目,这样它就不会随着移动而改变。不幸的是,我确实需要将所选的初始项目(或初始位置)存储在首选项对象中,但我无法在 doView 函数中执行此操作,并且在 portlet 切换状态之前不会调用 processAction。

我考虑过将初始选择存储在 session 中,并在调用 processAction 函数时读取它(赋予它比实际提交的选择更低的优先级)。这样做的问题是,如果 session 在用户切换 portlet 模式之前失效,则不会存储所选项目。

我的另一个想法是以某种方式将 portlet 的位置作为变量包含在 portlet.xml 文件的 portlet-preferences 元素中,但我什至不知道这是否可行。

我想另一个选择是使用我自己的首选项实现,但我认为这是最后的手段。

有人对我如何完成我的需要有任何想法吗?

非常感谢任何帮助/建议。

谢谢

B.J.

附注我使用 Portlet 2.0 规范(尽管我没有使用事件)和 Jetspeed 2.1 作为 portlet 容器。

最佳答案

我认为您不应该利用您的应用程序的 portlet 处置。除了使用专有门户之外,您没有办法确保 portlet 的顺序不被移动。 我会考虑在单个 portlet 中显示所有内容,然后依靠 javascript 来显示 block 的列和行。

关于java - 如何使具有相同支持类的 portlet 显示不同的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737102/

相关文章:

java - 用于从二进制文件在 Java 中构建图像(从拜耳滤波器传感器接收)的去马赛克算法

java - 光标无法解析错误

java - portlet 2.0 (jsr286) 开发与 spring

java - jetspeed 2 和 pluto 有什么区别?

java - 如何将jetspeed-1.5.jar迁移到jetspeed-2.x for java eclipse?

java - Spring Boot 应用程序未在 AWS Elastic Beanstalk 中进行身份验证

java - 如何编译Rust代码使其功能可以通过Java调用

authentication - 如何避免在liferay中从同一浏览器多次登录?

java - 组件位置 (Vaadin)

java - 使用 Eclipse、Tomcat 和 Jetspeed 热部署开发更改