如何处理视图作用域支持bean的内部转换器



这是JSF中视图作用域支持bean的另一个问题。我在我的视图作用域支持bean中创建了一个内部类。这个内部类就是converter。我需要内部类,因为我必须访问后台bean中的一些字段(在本例中是select- 1项的列表)。突然,我发现我的后台bean的@PostConstruct方法在每次请求之后都被调用。经过一些检查,我意识到转换器属性是问题所在,经过一些谷歌搜索,发现(一如既往)BalusC的博客原因。

所以,我的问题是如何使我的转换器工作良好,也有我的数据列表,这是必要的转换?

将转换器解耦为一个独立的类,并使用Application#evaluateExpressionGet()访问转换器方法内的视图作用域bean实例。

ViewBean viewBean = context.getApplication().evaluateExpressionGet(context, "#{viewBean}", ViewBean.class);
然而,这是一个有点令人讨厌的设计。如果我正确理解您根据可用项目列表转换所选项目的具体功能要求,那么另一种选择是使用基于物理<f:selectItem>/<f:selectItems>组件转换的通用转换器。JSF实用程序库OmniFaces有两个专门用于此目的的转换器,SelectItemsConverterSelectItemsIndexConverter

相关内容

  • 没有找到相关文章

最新更新