JSF中的转换器和验证器
来源:互联网 发布:上过好身材的体验知乎 编辑:程序博客网 时间:2024/05/19 22:46
JSF转换器
用户输入:
使用HTTP 请求发送到服务器。
被称为请求值。
作为字符串发送到服务器。
在处理之前,需要被转换成适当的数据类型。此转换过程称为转换。
标准转换器:在JSF 的核心标记库中作为标记提供,用于完成JSF 应用程序中的转换。
您还可以创建自己的转换器来满足应用程序的转换需求,这些转换器被称为自定义转换器
标准转换器:
是JSF 框架中的内置转换器。
可以使用JSF 核心标记库中提供的标记与JSF 页面的UI 组件相关联。
可用于将标准转换器与UI 组件关联的标记如下:
<c:convertNumber>将用户输入转换为数值。<c:convertDateTime>用于以指定格式和样式转换日期值。有各种属性,可用于指定特定的格式或样式。
例如:
<h:outputText value="#{payment.amount}"><!--表示用户在金额字段中输入的金额。它存储在paymentbean的amount属性中。--><c:convertNumber type="currency"/><!--将金额字段中输入的值转换为货币。--></h:outputText>
您还可以指定要用于货币的其他符号。
例如:
<h:outputText value="#{payment.amount}"><c:convertNumber type="currency" currencySymbol="€"/></h:outputText><!--指定用于货币的符号为€。-->
或者,您可以直接指定货币的符号作为currencySymbol属性的值。
您也可以使用<c:convertNumber>
标记的currencyCode属性添加特定于国家或地区的货币代码并将数字转换为货币。
<h:outputText value="#{payment.amount}"><c:convertNumber type="currency" currencyCode="NZD"/></h:outputText> <!--例如,如果您在金额字段中输入500,它将被转换为NZD500.00。将金额字段中输入的金额转换为货币并在金额前面添加NZD。-->
也可以将金额字段中输入的值转换为小数。
<h:outputText value="#{payment.amount}"><c:convertNumber minFractionDigits="4"/></h:outputText> <!--将金额字段中输入的值转换为小数点后至少有四位的小数。例如,如果您在金额字段中输入500,此金额将显示为500.0000。-->
例如:
<h:inputText value="#{payment.expDate}"><c:convertDateTime pattern="dd-MM-yyyy"/></h:inputText><!--表示用户在“到期日”字段中输入的到期日。用于将“到期日”字段中输入的value转换为日期。pattern属性指定应该在“到期日”字段中输入的日期的模式。-->
您可以使用UI 组件的converterMessage属性来指定用户定义的消息。
例如:
<h:inputText value="#{payment.expDate}" converterMessage="Enter date as dd-mm-yyyy, such as 20-04-2011"> <!--converterMessage属性指定用户定义的消息。当用户不按照dd-mm-yyyy 格式输入日期时,将显示用户定义的消息。--><c:convertDateTime pattern="dd-MM-yyyy"/></h:inputText>
自定义转换器:
JSF 框架为数字和日期提供了标准转换器。
然而,有时您可能需要将用户输入转换为数字和日期之外的数据类型。
要满足上述需求,您可以为应用程序创建自定义转换器。
JSF 允许您在包含转换器的实现逻辑的类中实现Converter接口来创建自定义转换器。
javax.faces.converter 包中提供了此接口。
Converter接口提供了以下方法来创建自定义转换器:
String getAsString(FacesContext context, UIComponent component, Object value)<!--将从bean 检索到的对象转换为可以在视图上显示的字符串。-->Object getAsObject(FacesContext context, UIComponent component, String newValue) <!--接受在UI 组件中指定的字符串值,并将该值作为对象转换。此对象可以用于更新bean 属性。-->
要创建自定义转换器并用它来执行用户输入的转换,需要执行以下步骤:
–创建实现javax.faces.converter.Converter 接口的类,并提供getAsObject()和getAsString() 方法的实现。
–在faces-config.xml 文件中或者通过使用@FacesConverter批注将类注册为自定义转换器。
–将自定义转换器与UI 组件关联。
JSF验证器
JSF 框架提供内置验证器,以执行不同类型的数据验证,该内置验证器也称为标准验证器。
如果标准验证器不符合应用程序的验证需求,也可以在JSF 应用程序中创建特定于应用程序的验证器。
标准验证器
是JSF 框架中的内置验证器。
通过使用JSF 核心标记库中提供的标记,可以将这些验证器与JSF 页面的UI 组件相关联。
可用于将标准验证器与UI 组件相关联的标记如下:
<c:validateDoubleRange><c:validateLength><c:validateLongRange><c:validateRequired><c:validateRegex>
<c:validateDoubleRange>
标记:
用于验证double类型用户输入的范围。
有两个属性:minimum和maximum,您可以用它们来指定用户输入的范围。
<h:inputText value="#{payment.amount}"><c:validateDoubleRange minimum="200" maximum="10000"/></h:inputText><!--表示用户在“金额”字段中输入的金额。将“金额”字段的最小值和最大值范围分别指定为200和10000。-->
当您向UI 组件添加验证器后,如果用户输入不符合验证器中指定的条件,将向用户显示错误消息。
您可以使用UI 组件的validatorMessage属性来指定用户定义的消息。
例如:
<h:inputText value="#{payment.amount}" validatorMessage="The amount must be greater than 200 and less than 10000"><c:validateLongRange minimum="200" maximum="10000"/></h:inputText><!--指定当用户未输入大于200 并小于10000 的金额时,将显示用户定义的消息。-->
<c:validateLength>
标记:
与<c:validateDoubleRange>
标记类似。
用于验证用户输入的长度。
包含minimum和maximum属性以验证用户输入的长度。
<h:inputText id="cc" value="#{payment.cCNumber}"><!--表示用户在支付页面的“信用卡/借记卡”字段中输入的信用卡号。--><c:validateLength minimum="16" maximum="16"/><!--将“信用卡号”字段的最小值和最大值范围指定为16。--></h:inputText>
<c:validateLongRange>
标记:
与<c:validateDoubleRange>
标记类似。
用于验证long类型用户输入的长度。
<c:validateRequired>
标记:
与UI 组件的required 属性类似。
用于确保用户必须在指定的字段中输入一个值。
<h:inputText value="#{payment.mobileNo}"><!--表示用户在支付页面的手机号字段中输入的手机号。--><c:validateRequired/><!--确保用户必须在支付页面的手机号字段中输入手机号--></h:inputText>
或者,您也可以将其required属性设置为true以在手机号字段中实现相同的功能。
例如:<h:inputText value="#{payment.mobileNo}" required="true"></h:inputText>
<c:validateRegex>
标记:
用于按照指定模式验证输入。
包含pattern属性,以指定验证用户输入所依据的模式。
<h:inputText value="#{payment.mobileNo}" required="true"><!--表示用户在支付页面的手机号字段中输入的手机号--><c:validateRegex pattern="[91]+\+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]+[0-9]"/><!--指定手机号必须以91+开头,后面是一个十位数。+ 号也用于连接字符串。所以,\用作转义序列,以将+号添加到91。--></h:inputText>
自定义验证器
自定义转换器是用户定义的验证器,用于满足特定于应用程序的验证需求。可被创建为:
实现Validator接口的类。
bean 方法。
Validator·接口:
提供了以下方法来创建自定义验证器:
void validate(FacesContext context, UIComponent component, Object value)
用此方法主体内实现的逻辑执行UI 组件的验证。
要将自定义验证器创建为Java 类,需要执行以下步骤:
- 创建实现Validator接口的Java 类,并在validate()方法内实现验证逻辑。
- 在faces-config.xml 文件中或者通过使用@FacesValidator批注将Java 类注册为自定义验证器。
- 使用标记将自定义验证器应用于UI 组件。
bean 方法:
当您将自定义验证器创建为bean 方法时,可以使用方法表达式将此验证器添加到UI 组件。
与作为自定义验证器创建的类不同,您无需注册作为bean 方法创建的自定义验证器。
您可以直接使用作为bean 方法创建的验证器内的实例变量。
您必须确保该bean 中创建的验证器方法与Validator接口的validate()方法有相同的签名。
要将自定义验证器作为bean 方法创建和使用,需要执行以下步骤:
- 在bean 中创建方法。
- 使用validator 属性将此方法与UI 组件绑定。
- JSF中的转换器和验证器
- JSF验证器和转换器
- JSF验证器和转换器
- JSF验证器和转换器
- JSF转换器和验证器
- JSF转换器&验证器的使用
- JSF2验证器和转换器
- jsf中的 国际化,验证和转换
- JSF--转换器的使用和自定义
- struts2的验证和转换器
- jsf验证器创建
- JSF---->标准验证器
- JSF---->自订验证器
- JSF转换器之自定义转换器
- JSF消息标签验证和代码验证
- JSF自定义转换器
- JSF自定义转换器
- 自定义JSF转换器示例
- PHP数组和explode函数
- 锋利的jQuery | jQuery中的DOM操作
- Vim 使用小结
- 1
- JS 回车提交,兼容IE、火狐、Opera、Chrome、Safari……
- JSF中的转换器和验证器
- 2
- 155.n1-Sliding menu的使用,创建侧边栏
- 计蒜客 跳跃游戏二 动态规划
- Java入门学习-自我理解IO流
- 填报表更新时去除重复数据
- java获取当天的开始时间,当前周的开始时间
- Problem A: Person类与Student类的关系
- docker 安装 zabbix