jsf集成spring_Spring和JSF集成:转换器

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355762.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在python中、实例变量在类的内部通过_[宜配屋]听图阁

1、类变量、实例变量概念类变量&#xff1a;类变量就是定义在类中&#xff0c;但是在函数体之外的变量。通常不使用self.变量名赋值的变量。类变量通常不作为类的实例变量的&#xff0c;类变量对于所有实例化的对象中是公用的。实例变量&#xff1a;实例变量是定义在方法中的变…

java第五次作业

《Java技术》第五次作业 &#xff08;一&#xff09;学习总结 1.在上周完成的思维导图基础上&#xff0c;补充本周的学习内容&#xff0c;对Java面向对象编程的知识点做一个全面的总结。 2.汽车租赁公司&#xff0c;出租汽车种类有客车、货车和皮卡三种&#xff0c;每辆汽车除了…

mysqld已删除但仍占用空间的_Windows 10删除备份文件方法

Windows具有许多内置备份功能&#xff0c;包括卷影副本&#xff0c;系统还原点和整个系统备份。尽管它们既不是最可靠也不是功能最丰富的备份解决方案&#xff0c;但它们确实提供了一种备份系统和个人数据的不错的方式。Windows内置备份工具的问题之一是它们几乎过于安静和方便…

服务器维修天长,台达精密空调服务天长市供电局

【IT168 厂商动态】项目背景&#xff1a;天长市供电局率属于安徽省供电局&#xff0c;主要负责其辖区内的电力生产与供应。本项目包括三个机房&#xff1a;南、北数据中心机房以及资料中心;台达风冷型精密空调为上述机房的IT设备运行提供7*24小时恒温恒湿高洁净度的运行环境&am…

JS续

JS中的事件 [JS中的事件分类] * 1、鼠标事件&#xff1a; * click/dbclick/mouseover/mouseout/mousemove/mousedown/mouseup * * 2、键盘事件&#xff1a; * keydown: 键盘按下去触发 * keypress: 键盘按下并松开的瞬间触发 * keyup: 键盘抬起时触发 * * [注意事项&#xff…

终端主题_泛终端全渠道新模式中国移动5G泛智能终端渠道生态合作峰会开幕

11月20日&#xff0c;以“泛终端 全渠道 新业态 新模式”为主题的中国移动5G泛智能终端渠道生态合作峰会在广州成功举办。作为2020中国移动全球合作伙伴大会期间举办的重要主题峰会之一&#xff0c;该峰会吸引了超过100家终端、渠道等产业链合作伙伴&#xff0c;会议通过咪咕直…

jq中查找上级_【节能学院】电能管理系统在福州三岐小学项目中的设计及应用...

1项目概述该项目总投资约2.6亿元&#xff0c;建筑规模为4.8万㎡&#xff0c;建设地点在南屿镇葛岐村、晓岐村。项目设有教学楼A区、教学楼B区、教学楼C区、综合楼一区、综合楼二区、室内篮球场、室内游泳馆、足球场等。此电能管理系统为Acrel-3000V7.1系统&#xff0c;在结构设…

5!(简单的了解for循环与递归的区别)

public class Five_factorial {public static void main(String[] args) {/*** 1.普通方法实现5的阶乘*/int f 1;for (int i 5; i > 1; i--) {f * i;}System.out.println(f);/*** 2.运用递归实现5的阶乘*/int n 5;Five_factorial five_factorial new Five_factorial();f…

在本地安装独立的HBase和Apache Storm简单集群

我们主要使用Apache Storm进行流处理&#xff0c;并使用Apache HBase作为NoSQL宽列数据库。 即使Apache Cassandra是一个出色的NoSQL数据库&#xff0c;由于Cloudera的分布以及与Cassandra相比更加一致 &#xff08;请检查CAP定理 &#xff09;&#xff0c;我们还是更喜欢HBas…

auc 和loss_深入理解AUC

在机器学习的评估指标中&#xff0c;AUC是一个最常见也是最常用的指标之一。AUC本身的定义是基于几何的&#xff0c;但是其意义十分重要&#xff0c;应用十分广泛。本文作者深入理解AUC&#xff0c;并总结于下。AUC是什么在统计和机器学习中&#xff0c;常常用AUC来评估二分类模…

[HTML5amp;CSS3]Transform具体解释

Transform字面上就是变形&#xff0c;改变的意思。在CSS3中transform主要包含以下几种&#xff1a;旋转rotate、扭曲skew、缩放scale和移动translate以及矩阵变形matrix。以下我们一起来看看CSS3中transform的旋转rotate、扭曲skew、缩放scale和移动translate详细怎样实现。老样…

perl转python_将行转换为perl或python中的列

我认为你可以用一张桌子做好&#xff0c;所以我会告诉你如何做你要求的和我认为好的。$name "";$data {};open(IN, "build.txt");foreach my $line (){if($line ~ /Re: (.*)\n/) { # get building name$name $1;$name ~ s/ /_/;$data->{$name} []; …

比亚迪定薪后多久给offer_比亚迪车主给爱车做四门隔音,没想到两年后肠子都悔青...

许多车主都有过这样的经历&#xff1a;总感觉爱车的静谧性不够如意&#xff0c;为了提升隔音效果改善驾乘质感&#xff0c;往往产生给爱车做一个全车隔音的冲动。只不过冲动归冲动&#xff0c;在着手对车子进行隔音改造工程前&#xff0c;一定要选择靠谱的隔音材料&#xff0c;…

Centos开机自己主动挂载windows中的ntfs磁盘

装了windows和centos双系统后&#xff0c;发如今centos中无法进入windows中的磁盘&#xff0c;更不要说查看磁盘里的文件了&#xff01; 原来默认情况下。centos不支持Widows NTFS硬盘分区读写&#xff0c;要想把NTFS格式的磁盘挂载到CentOS 以下须要安装第三方软件ntfs-3g。…

人工智能方向毕业设计_毕业季|广州美术学院视觉设计学院毕业设计展

视觉艺术设计学院成立于2010年9月&#xff0c;由广州美术学院最传统的装潢系和新兴的数码艺术设计系联合组建而成&#xff0c;2018年11月&#xff0c;艺术与科技专业并入学院。学院现拥有视觉传达设计、数字媒体艺术设计、动画、艺术与科技4个专业。视觉文化设计工作室 视觉文化…

江西住建云实名认证怎么弄_王者荣耀无限时间怎么弄 2020年无限时间账号

腾讯游戏都是有健康系统的&#xff0c;王者荣耀自然也不例外&#xff0c;王者还是第一批出健康系统的游戏&#xff0c;今年健康系统同时有时间限制和充值限制&#xff0c;未成年玩家一天最多只能玩1.5个小时&#xff0c;游戏现在有传闻无限时间账号&#xff0c;那么无限时间怎么…

coherence安装_在Oracle Coherence中分发Spring Bean

coherence安装本文展示了如何通过使用Oracle Coherence中的EntryProcessor和可移植对象格式&#xff08;POF&#xff09;功能来分发Spring Bean。 Coherence通过EntryProcessor API支持无锁编程模型。 此功能通过减少网络访问并在条目上执行隐式的低级锁定来提高系统性能。 此隐…

spring 的aop操作

转载于:https://www.cnblogs.com/hwgok/p/6760663.html

excel 公式 单引号 concat_Excel两个新函数帮你快速搞定批量连接

如果将两个文本连接起来&#xff0c;通常第一反应用连接符号"&"。使用连接符&连接文本字符记得曾经有记者采访刘强东问奶茶妹妹漂不漂亮&#xff0c;他竟然回答看不出来好赖…当时真觉得这家伙身在福中不知福&#xff0c;饱汉不知饿汉饥。果然之后还闹出一些…

向量表示 运动抛物线_ALevel物理知识点详解:抛物线运动

考培雅思留学申请一站式服务&#xff0c;专为有志于申请英国G5超级精英大学以及澳洲八大、新加坡顶尖高校的中学生设计。开设有数学、进阶数学、物理、化学、生物、经济、会计等理科、商科、人文类课程&#xff0c; 学生可根据优势学科、兴趣爱好自由选择3-4门学习。锦秋A-Leve…