Jsf 如何处理视图范围的支持bean的内部转换器

Jsf 如何处理视图范围的支持bean的内部转换器,jsf,converter,inner-classes,view-scope,Jsf,Converter,Inner Classes,View Scope,JSF中视图范围的支持bean还有另一个问题。我在视图范围的支持bean中创建了一个内部类。内部类是转换器。我需要内部类,因为我必须从我的支持bean访问一些字段(在本例中是selectone项的列表)。突然我发现我的支持bean的@PostConstruct方法在每次请求后都会被调用。经过一些检查,我意识到转换器属性是问题所在,在一些谷歌搜索之后,我找到了(一如既往)原因 因此,我的问题是如何使我的转换器正常工作,并拥有转换所需的数据列表?将转换器解耦为一个独立类,并用于访问转换器方法内的视图

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


因此,我的问题是如何使我的转换器正常工作,并拥有转换所需的数据列表?

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

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

然而,这是一个有点讨厌的设计。如果我了解您基于可用项列表转换所选项的具体功能要求,那么另一种方法是使用通用转换器,该转换器基于物理组件进行转换。JSF实用程序库有两个转换器用于此目的,and。

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

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

然而,这是一个有点讨厌的设计。如果我了解您基于可用项列表转换所选项的具体功能要求,那么另一种方法是使用通用转换器,该转换器基于物理组件进行转换。JSF实用程序库中有两个转换器正好用于此目的,和。

非常好,谢谢BalusC。OmniFaces还有一些我感兴趣的东西,我想现在是开始使用它的时候了。我只是希望它不会给我带来其他副作用。不客气。从1.3版开始,据我所知,它不会引起任何副作用。这对我来说是一个普遍的问题。我避免使用转换器,因为它们总是需要访问位于我的支持bean中的集合。我使用了id(`value=“#{mybean.objectId})有ID的接球手和二传手。巴卢斯可能会为此打我屁股,他应该打,因为这会导致其他丑陋的问题,基本上是在接球手和二传手中进行转换。但我看不到更优雅的选择。太好了,谢谢巴卢斯。OmniFaces有一些我感兴趣的其他东西,我想现在是开始usi的时候了我只是希望它不会给我带来其他一些副作用。不客气。从1.3版开始,我认为它不会造成任何副作用。这对我来说是一个普遍的问题。我避免了转换器,因为它们总是需要访问位于我的支持bean中的集合。我使用了ID(`value=“#{mybean.objectId})使用ID获取器和设置器。巴卢斯可能会为此打我屁股,他应该打,因为这会导致其他丑陋的问题,基本上是在接球手和二传手之间进行转换。但我看不到比这更优雅的选择。