如何在复合组件中缓存数据?

时间:2015-03-13 12:17:07

标签: jsf composite-component

我一直在使用这个动态列表组件:

How to implement a dynamic list with a JSF 2.0 Composite Component?

我想做的其中一件事是缓存“list”的原始值,以便当用户在此列表中添加或删除某些内容时...我知道添加/删除了哪些内容以便我可以与他们做一些不同的事情。例如,“已删除”项目只会有一个删除线。或者,“添加”项目将具有不同的背景,以显示它最近被添加。

我现在似乎唯一可行的方法是让组件本身采用3个不同的列表

<mycomp:dynamicList list="#{bean.list}" addList="#{bean.addList}" 
    deleteList="#{bean.deleteList}"/>

这似乎过于繁琐。只有网页/组件需要知道这三个列表中的差异...一旦表单实际提交,支持bean只需要知道“列表”的新值。所以,理想情况下,我只想使用:

<mycomp:dynamicList list="#{bean.list}"/>

1 个答案:

答案 0 :(得分:2)

使用继承的getStateHelper()方法可用的JSF视图状态。这基本上就像JSF视图范围一样。

确保您不在JSF视图状态中存储/复制/复制整个模型(列表),而只存储已添加/删除项目的索引。

另见: