如何在复合组件中缓存数据?
How can I cache data inside a composite component?
我一直在使用这个动态列表组件:
How to implement a dynamic list with a JSF 2.0 Composite Component?
我想做的一件事是缓存 "list" 的原始值,这样,当用户从这个列表中添加或删除某些内容时...我知道哪些是 added/removed 这样我就可以用它们做一些不同的事情。例如,"removed" 项目将只使用删除线代替。或者,"added" 项将具有不同的背景以表明它是最近添加的。
我现在似乎唯一能做到这一点的方法是让组件本身接受 3 个不同的列表
<mycomp:dynamicList list="#{bean.list}" addList="#{bean.addList}"
deleteList="#{bean.deleteList}"/>
这似乎太麻烦了。只有 web page/component 需要知道这三个列表的区别...一旦表单被实际提交,backing bean 只需要知道 "list" 的新值。所以,理想情况下,我只想使用:
<mycomp:dynamicList list="#{bean.list}"/>
利用继承的 getStateHelper()
方法可用的 JSF 视图状态。这基本上就像 JSF 视图范围一样。
确保您没有 store/copy/duplicate JSF 视图状态中的整个模型(列表),而只有 added/removed 个项目的索引。
另请参阅:
- How to save state when extending UIComponentBase
我一直在使用这个动态列表组件:
How to implement a dynamic list with a JSF 2.0 Composite Component?
我想做的一件事是缓存 "list" 的原始值,这样,当用户从这个列表中添加或删除某些内容时...我知道哪些是 added/removed 这样我就可以用它们做一些不同的事情。例如,"removed" 项目将只使用删除线代替。或者,"added" 项将具有不同的背景以表明它是最近添加的。
我现在似乎唯一能做到这一点的方法是让组件本身接受 3 个不同的列表
<mycomp:dynamicList list="#{bean.list}" addList="#{bean.addList}"
deleteList="#{bean.deleteList}"/>
这似乎太麻烦了。只有 web page/component 需要知道这三个列表的区别...一旦表单被实际提交,backing bean 只需要知道 "list" 的新值。所以,理想情况下,我只想使用:
<mycomp:dynamicList list="#{bean.list}"/>
利用继承的 getStateHelper()
方法可用的 JSF 视图状态。这基本上就像 JSF 视图范围一样。
确保您没有 store/copy/duplicate JSF 视图状态中的整个模型(列表),而只有 added/removed 个项目的索引。
另请参阅:
- How to save state when extending UIComponentBase