1

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

就目前而言,每个 portlet 最初都显示列表中的第一项,直到用户编辑 portlet 并选择不同的项目。但是,我希望每个 portlet 最初都显示不同的项目。

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

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

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

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

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

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

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

谢谢,

北京

PS 我使用 Portlet 2.0 规范(虽然我没有使用事件)和 Jetspeed 2.1 作为 portlet 容器。

4

1 回答 1

0

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

于 2011-01-12T10:25:33.040 回答