我有一个包含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元素中,但我甚至不知道这是否可行。
我想另一个选择是使用我自己的首选项实现,但我认为这是最后的手段。
有没有人对如何实现我的需求有任何想法?
非常感谢任何帮助/建议。
谢谢,
B.J。
P.S。我正在使用Portlet 2.0规范(虽然我没有使用事件)和Jetspeed 2.1作为portlet容器。
答案 0 :(得分:0)
我认为您不应该利用portlet处理您的应用程序。除了使用专有门户之外,您无法确保不移动portlet的顺序。 我会考虑在单个portlet中显示所有内容,然后依赖javascript来获取块的行和列。