jsf集成spring
String
为其他类型。 尽管Spring和JSF在设计和功能上确实有很大的不同,但它们都具有转换器策略来处理此问题。 让我们从春天开始。 Spring 3引入了一个全新的转换框架,该框架允许将任何类型的对象转换为任何其他类型(只要注册了适当的转换器)。 基思·唐纳德(Keith Donald)撰写了有关新转换过程如何工作的文章。 Spring MVC在版本3中也进行了更新,以在处理请求参数时使用转换器服务,例如,将String
参数传递给以下控制器方法:
@RequestMapping
public void example(@RequestParam Integer value)
将导致StringToNumber
转换器(通过StringToNumberConverterFactory
)运行以创建等效的Integer
。
与Spring不同,JSF中的转换器仅处理对象与字符串之间的转换。 javax.faces.convert.Converter
接口定义了两个方法: getAsString
(在渲染时使用)将对象转换为字符串,而getAsObject
(在解码回发时使用)将先前渲染的字符串转换回对象。
默认情况下,您可以通过将条目添加到faces-config.xml
或使用@FacesConverter
批注向JSF注册转换器。 我一直在努力允许您通过简单地将它们声明为Spring bean来注册JSF转换器。 与普通JSF相比,使用Spring bean具有许多优点。 例如,您可以轻松注入其他协作者bean,并且可以使用Spring AOP。 要使用转换器bean,只需从JSF引用其ID:
@Component
public class MyConverter implements Converter {@Autowireprivate MyHelper helper;...
}
<h:inputText value=”#{bean.value}”><f:converter converterId=”myConverter”/>
</h:inputText>
为了一次又一次地保存对相同转换器ID的引用,JSF允许您为特定类“注册”转换器。 为了通过Spring支持这一点,引入了一个新的@ForClass
批注:
@Component
@ForClass(MyCustomType.class)
public class MyConverter implements Converter {...
}
上面的示例在每次MyCustomType
对象需要转换时都将使用MyConverter
。
为了方便起见,我还提供了支持泛型的javax.faces.convert.Converter
的变体。 org.springframework.springfaces.convert.Converter
接口具有与标准JSF版本相同的签名。 当将此接口与@ForClass
一起使用时,您还可以省略注释上的值:
@Component
@ForClass
public class MyConverter implements Converter<MyCustomType> {...
}
您还可以使用ConditionalForClass
接口实现更复杂的“类”绑定(有关详细信息,请参见JavaDoc )。
最后,还支持使用Spring MVC中的JSF转换器(无论如何注册)。 GenericFacesConverter
是一个Spring ConditionalGenericConverter
,在注册后会自动委托给JSF。
例如,假设为MyCustomType
注册了MyConverter
则以下MVC映射将起作用:
@RequestMapping("/example")
public void example(@RequestParam MyCustomType value) {....
}
如果需要引用特定的JSF转换器,也可以使用@FacesConverterId
批注:
@RequestMapping("/example")
public void example(@RequestParam @FacesConverterId("myOtherConverter") MyOtherCustomType value) {....
}
如果您想了解这一点,请从展示应用程序中查看ConverterExampleController 。
参考: 集成Spring和JavaServer Faces: Phil Webb博客博客中我们JCG合作伙伴 Phillip Webb的转换器 。
翻译自: https://www.javacodegeeks.com/2012/06/spring-jsf-integration-converters.html
jsf集成spring