我创建了一个自定义控件并将其添加到我的标签库中。
此控件显示两个 selectonemenu,其中第二个依赖于第一个,并通过 ajax 从数据库中的数据进行更新。
目前,我使用视图范围 bean 来选择第二个的数据。但我对这个解决方案并不满意,因为有一个 bean 可能用于多个实例。
在asp.net中有一个控件状态来保存控件相关数据。有没有类似的东西?
或者,我可以将请求范围的 bean 与转换器一起使用,该转换器在选择时再次从数据库中检索数据。
Component State
在谈论扩展类时调用等效项UIComponent
。
@Override
public Object saveState(FacesContext context) {
Object values[] = new Object[2];
values[0] = super.saveState(context);
values[1] = label;
return ((Object) (values));
}
@Override
public void restoreState(FacesContext context, Object state) {
Object values[] = (Object[])state;
super.restoreState(context, values[0]);
label = (String)values[1];
}
以上是如何在 UIComponent 中跨回发持久化组件属性的示例。简单扩展以下两种方法。