jsf集成spring

使用任何Web框架时,都不可避免地需要将用户输入的数据从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

jsf集成spring_Spring和JSF集成:转换器相关推荐

  1. jsf集成spring_Spring和JSF集成:异常处理

    jsf集成spring 大多数JSF开发人员都会熟悉"发生错误"页面,当在他们的代码某处引发意外异常时,该页面就会显示. 该页面在开发时确实很有用,但对于生产应用程序通常不是您想要 ...

  2. jsf集成spring_Spring和JSF集成:MVC螺母和螺栓

    jsf集成spring 过去,我曾尝试将JSF与Spring MVC集成在一起,尽管我的第一次尝试成功了,但这远非理想. 这次,我决定做出一些关键决定来帮助我集中精力: 向后兼容. 支持JSF 1.2 ...

  3. jsf集成spring_Spring和JSF集成:国际化和本地化

    jsf集成spring 如果您正在开发针对多种语言的JSF应用程序,那么您可能很熟悉<f:loadBundle>标记. 即使您的应用程序不支持使用消息捆绑包进行国际化仍然是一个好主意. 在 ...

  4. jsf集成spring_Spring和JSF集成:动态导航

    jsf集成spring 通常,您的JSF应用程序将需要超越基本的静态导航并开始做出动态导航决策. 例如,您可能想根据用户的年龄重定向他们. 大多数JSF教程建议通过将命令的action属性绑定到支持b ...

  5. jsf集成spring_Spring和JSF集成:分页

    jsf集成spring 使用大型数据集时,通常需要以分页格式显示数据. 分页是一个有趣的问题,因为它倾向于跨越应用程序的所有层,从视图层通过应用程序服务一直到对数据库的原始调用. 在获取分页数据时,有 ...

  6. jsf集成spring_Spring和JSF集成:导航

    jsf集成spring 我希望这是有关我在Spring和JavaServer Faces之间提供深度集成的努力的一系列博客中的第一篇. 这里提到的所有内容都是"正在进行中的工作", ...

  7. jsf集成spring_Spring JSF集成

    jsf集成spring Welcome to Spring JSF integration tutorial. JSF is a component based framework with grea ...

  8. 15 三明治集成方法和混合策略集成方法

    三明治集成方法和混合策略集成方法 前言 三明治集成方法 混合策略集成方法 总结 前言 关于集成测试方法今天我们再学习两个方法,三明治集成方法和混合策略集成方法. 三明治集成方法 采用三明治方法的优点是 ...

  9. 14 集成测试方法之自底向上集成方法

    自底向上集成方法 前言 自底向上集成方法 前言 集成测试方法没有好坏之分,只有哪个更适合. 自底向上集成方法 自底向上集成方法是从调用的底层开始逐级的向上集成,每测试完一个族群就将其挂到上一层的模块上 ...

最新文章

  1. caioj 1158 欧拉函数
  2. mysql查询字符串出现次数
  3. d+java.ext.dirs_Java-JDK9-Djava.ext.dirs is not supported
  4. codevs 1004 四子连棋 BFS、hash判重
  5. windows10怎么安装python第三方库_怎么在windows下安装python第三方包
  6. webView.loadUrl(file:///android_asset/table3.html)出现中文乱码的问题
  7. java链表集合_Java底层基于链表实现集合和映射--集合Set操作详解
  8. 提高 Web Service 数据传输效率的基本方法
  9. 商丘服务器维修,商丘联想服务器维修网点
  10. 解决Sheet can not be presented because the view is not in a window这样的问题
  11. oracle+clod+和bolb,Azure存储Blob类型(CloudBlobContainer,CloudBlobClient等)和线程安全
  12. 插值、拟合和逼近的对比
  13. VoiceChatter在VS2005上编译方法
  14. 苹果几是双卡双待_iPhoneSE将于4月24日开卖:苹果A13+双卡双待,网友:等到了!...
  15. 程序员入职请前辈吃饭,一桌五人 网友五字神评论亮了
  16. 对比这10个注意事项,你的网页文字排版达标了么?
  17. c语言标识符能用main吗,请问下C语言用户标识符main到底是不是关键字?关键字包括哪些?...
  18. Dropbox和其他备份产品概述
  19. #445 津津有味:红黑榜 | 别拿油醋汁玩文字游戏,不厚道
  20. 【小安安日文化行】15儿童节

热门文章

  1. ssm中spring mvc找不到控制器,报错404
  2. React中的各个目录文件功能
  3. 小小涉及OpenFeign原理:Could not extract response: no suitable HttpMessageConverter found for response type
  4. sql2008 sql服务_SQL即服务
  5. jdk 流合并_JDK 12,合并的收集器和命名的挑战
  6. 震惊kafka_5个令人震惊的统计数据证明日志不足
  7. jdk8和hotspot_HotSpot的-XshowSettings标志的简单性和价值
  8. 什么时候需要使用cqrs_在CQRS读取模型中使用Hibernate进行快速开发
  9. apache camel_Apache Camel请向我解释这些端点选项的含义
  10. Java –从列表中删除所有空值