我有一个包含 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/