1

JSF 中视图范围的支持 bean 的另一个问题。我在视图范围内的支持 bean 中创建了一个内部类。那个内部类是转换器。我需要内部类,因为我必须从我的支持 bean 访问一些字段(在这种情况下选择一个项目的列表)。突然间,我发现每次请求后都会调用我的支持 bean 的@PostConstruct方法。经过一番检查,我意识到转换器属性是问题所在,经过一些谷歌搜索(一如既往)在BalusC 的博客上找到了这个原因。

所以,我的问题是如何让我的转换器正常工作,并且还有我的转换所需的数据列表?

4

1 回答 1

1

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

ViewBean viewBean = context.getApplication().evaluateExpressionGet(context, "#{viewBean}", ViewBean.class);

然而,这是一个有点讨厌的设计。如果我了解您根据可用项目列表转换所选项目的具体功能要求,另一种方法是使用基于物理<f:selectItem>/<f:selectItems>组件转换的通用转换器。JSF 实用程序库OmniFaces有两个专门用于此目的的转换器,SelectItemsConverterSelectItemsIndexConverter.

于 2013-01-11T13:22:26.867 回答