NetBeans中JSF应用开发(6)

创建自定义转换器
尽管使用必填域和转换器进行验证非常简单,但是也非常有限。例如,验证器可以验证生日域是一个有效的日期,但是不能验证日期是之前的日期。为了调整日期验证的方式,我们将创建一个自定义验证器。我们的验证器将验证日期的格式是正确的并且是过去的日期。如果遇到错误,验证器将显示相应的消息。
要创建一个自定义转换器,你需要创建一个实现javax.faces.converter.Converter接口的类,并且在faces-config.xml中注册这个类。你可以通过<f:converter>标记来使用转换器。
1. 右键点击工程节点,然后选择New > Java Class,把类命名为MyDateConverter,并放在astrologer.convert包中,然后点击Finish。
2. 在类的声明中,实现Converter接口,如下:
public class MyDateConverter implements Converter {
3. 使用IDE的提示来添加合适的import语句,并实现抽象方法。 (在前面部分,你使用了IDE提示来实现validate方法)。IDE生成两个方法:getAsObject and getAsString。
4. 把下面的代码添加在方法getAsObject中(确保把方法声明中的String参数改成value):
public Object getAsObject(FacesContext context, UIComponent component, String value) throws ConverterException {
 String pattern = "dd/MM/yyyy";
 SimpleDateFormat sdf = new SimpleDateFormat(pattern);
 Date nDate;
 try {
 nDate = sdf.parse(value);
 } catch (ParseException ex) {
 FacesMessage message = new FacesMessage();
 message.setDetail("Date is missing or not valid");
 message.setSummary("Date is missing or not valid");
 message.setSeverity(FacesMessage.SEVERITY_ERROR);
 throw new ConverterException(message);
 }
 if(nDate.getTime() > new Date().getTime()){
 FacesMessage message = new FacesMessage();
 message.setDetail("Date is bigger than current date");
 message.setSummary("Date is bigger than current date");
 message.setSeverity(FacesMessage.SEVERITY_ERROR);
 throw new ConverterException(message);
 }
 return nDate;
 }
5. 修改方法的签名,并把下面的代码添加到getAsString方法中 (在方法签名中,确保把Object参数的名字修改为value):
public String getAsString(FacesContext facesContext, UIComponent uIComponent, Object value) {
 return value.toString();
}
6. 使用Alt+Shift+F添加必须的import语句。 (你应该选择引入java.text.ParseException和java.util.Date)
7. 代开faces-config.xml,然后添加下面的代码:
<converter>
 <converter-id>astrologer.MyDateConverter</converter-id>
 <converter-class>astrologer.convert.MyDateConverter</converter-class>
</converter>
 
8. 打开greeting.jsp更新表单:
<p>Enter your name: <h:inputText value="#{UserBean.name}" id="name" required="true"/>
<h:message for="name" style="color:#f00;" /></p>
<p>Enter your email: <h:inputText value="#{UserBean.email}" id="email" required="true">
 <f:validator validatorId="astrologer.EmailValidator" />
 </h:inputText>
<h:message for="email" style="color:#f00;" /></p>
<p>Enter your birthday: <h:inputText value="#{UserBean.birthday}" id="birthday" required="true">
 <f:converter converterId="astrologer.MyDateConverter" />
 </h:inputText> <h:message for="birthday" style="color:#f00;" />
(dd/mm/yyyy)</p>
<h:commandButton value="Submit" action="#{UserBean.submit}" />

 
9. 运行工程,当您输入一个无效的日期或者将来的日期,您将会看到下面的错误信息:
关于自定义转换器参考书上180页。
书:《Java EE 5实用教程》
Netbeans 开发 JSF 2.0 入门学习,使用Primefaces 及JPA 使用 Netbeans 开发JSF 2.0,使用Primefaces 及JPA ,一步一步指导如何开发 立即下载

相关推荐

滚动轴承振动信号特征解析与故障诊断模型构建

本文深入解析了滚动轴承振动信号的三大来源与特征,并详细阐述了从时域、频域到时频域的特征提取方法。通过构建基于机器学习(如随机森林、SVM)或深度学习的故障诊断模型,结合实战代码示例,为设备维护工程师提供了一套从信号分析到智能诊断的完整解决方案,旨在实现精准的故障识别与预测性维护。

qsc901234567的博客 368

NetBeans中JSF应用开发(2)

 目标:在JSF应用中使用管理Bean在上一节中,我们使用JSF组件创建了一个简单的web应用。但是,我们的Web应用还不能做任何有意义的事情。为了丰富我们的JSF应用的功能,可以建立辅助Bean(Backing Bean)与UI组件的关联。辅助Bean又称为JSF管理Bean,是一个普通的JavaBean组件,但是他们的属性和方法可以供JSF组件访问。在我们的例子中,我们将创建一个U

李绪成的一亩三分地 3501

Python实战:基于PyG和Stable-Baselines3复现柔性车间调度算法(附数据集)

本文提供了一份基于图神经网络与深度强化学习的柔性车间调度实战指南。通过PyTorch Geometric构建异构图表示车间状态,并利用Stable-Baselines3中的PPO算法训练调度智能体,详细介绍了从环境建模、网络设计到训练评估的完整代码实现,帮助开发者构建可复用的工业级智能调度系统。

ansible6ops的博客 608

NetBeans中JSF应用开发(5)

 创建自定义验证器如果标准的JSF验证器不能满足您的要求,你可以编写自己的验证器。在我们的例子中,我们将编写一个验证器来验证一个字符串是否是一个合法的email。要创建一个自定义验证器,需要创建一个实现javax.faces.validator.Validator接口的类,并在faces-config.xml中配置,可以通过标记来使用验证器。1.       右键点击工程节点,

李绪成的一亩三分地 2228

避坑指南:将大华官方Java SDK无缝迁移到SpringBoot 2.x项目的完整流程

本文详细介绍了如何将大华官方Java SDK无缝迁移到SpringBoot 2.x项目,重点解决内存管理、连接池设计和异步处理等核心问题。通过设备连接池化、异步非阻塞接口改造和内存管理优化,实现刷卡、刷脸等认证功能的高效整合,提升Web服务的稳定性和性能。

weixin_42557830的博客 418

Qt 【window udp 高频采集丢包问题】

使用Asio + 无锁队列或者环形缓存区方案可以解决 qt udp 在window平台高速采集 (128k)丢包问题。

weixin_45397344的博客 177

NetBeans中JSF应用的开发(3)

 目标:使用标准的验证器和转换器设置某个域为必填的首先我们需要做的是确保用户为name域输入一些信息,我们可以通过使用inputText组件的required属性轻松做到。1.       打开greeting.jsp,然后修改inputText组件如下: Enter your name:          id="name" required="true"/>

李绪成的一亩三分地 2603

通信算法之283:大疆DJI云哨系统-DJI DroneID物理层协议-解速率匹配及Turbo译码

3. 完整云哨接收机,接收灵敏度。交流: 1279682290 ,2. Turbo译码模块。1. 解速率匹配模块。

leegang12的专栏 868

NetBeans中JSF应用开发(1)

 这是JSF技术系列讲座的第1个,整个讲座包括两大部分,第1部分是在NetBeans中的开发过程,第二部分是JSF相关技术的全面介绍。JavaServer Faces是Web应用中构建用户接口组件的标注Java API。可以把JSF框架想象成充满随时可以使用的组件的工具箱,这些组件可以在Web应用中快速和方便的重用。这些组件可能是简单的,例如存取用户数据的输入框,可能非常复杂,例如使用弹出

李绪成的一亩三分地 6567

Qt入门教程【数据类型篇】数值类型

Qt中的数值类型

小鱼酱的博客 1万+

Android SurfaceFlinger——概述(一)

对于系统渲染流程的理解是指导 SurfaceFlinger 设计的核心思想,从 Android 4.1 一直到 Android 9.0 都没有太大的变化。只要抓住这五个核心思想,我们阅读 SurfaceFlinger 的难度就会下降不少。下面看一下 SurfaceFlinger 的体系和 Skia 以及 View的绘制流程的关系。framework 面向开发者所有的 View 是便于开发的控件,里面仅仅只是提供了当前 View 各种属性以及功能。

小旭的专栏 2584

SAP BO邮件自动发送配置实战:从SMTP到定时报表分发

在企业信息化建设中,报表平台的价值不仅在于数据展示,更在于将数据主动送达决策者。邮件作为最通用的信息触达通道,常与商业智能系统集成以实现自动化分发。其核心原理是通过SMTP协议将报表实例作为附件提交至邮件服务器,由邮件服务器完成最终投递。掌握这一原理,运维人员可快速构建定时报表推送机制,提升数据时效性,减少人工导出与发送成本。该能力广泛应用于销售日报、周报、异常告警、管理层驾驶舱快照等场景。本文聚焦SAP BusinessObjects(BO)平台,详细讲解邮件发送功能的前期准备、CMC配置、用户邮件地址维

weixin_34162228的博客 342

【UG\NX二次开发】多个带ui的dll怎么整合到一个dll

NX二次开发-群精选」专栏收录了那些曾散落在聊天对话框里的精彩的知识分享,这都是被遗落的宝贵财富。让我们一起向大佬学习,充满激情地进步,不断超越自己。底部联系方式,欢迎您加入一起交流。有大佬知道多个带ui的dll怎么整合到一个dll吗。

王牌飞行员_里海的博客 286

NetBean 6.0初探

NetBean 6.0初探 subversion,tomcat6.0,glassfish都集成在NetBean6.0中。 subversion的使用. 1,下载subversion的客户端,到www.collab.net下载,并安装。 2,安装putty工具. 3,解压putty到C盘,比如c:/putty 4,添加环境变量.         变量: path         值  :c:/p

东南草堂 508

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

netbeans8.2简单使用JSF

#netbeans8.2简单使用JSF ##1.创建一个JAVAweb项目 服务器都是用默认的服务器。在框架选择处选择javaServer faces,首选页面语言为JSP。未说明的默认选项就好。 ##2.创建JSF配置文件 2.在javaweb项目下的源包创建一个java包mycontrol,并且创建JSF受管bean文件controler 3.编写受管bean内容 @ManagedBean(name ="controler") @SessionScoped public class control

build_zzz的博客 648

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NetBeans6.8下JSF可视化入门(未完)

吕海鹏 in 优快云 Blog 2735

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

NetBeans中JSF应用开发

这是JSF技术系列讲座的第1个,整个讲座包括两大部分,第1部分是在NetBeans中的开发过程,第二部分是JSF相关技术的全面介绍。JavaServer Faces是Web应用中构建用户接口组件的标注Java API。可以把JSF框架想象成充满随时可以使用的组件的工具箱,这些组件可以在Web应用中快速和方便的重用。这些组件可能是简单的,例如存取用户数据的输入框,可能非常复杂,例如使用弹出式日历

meteorWJ's Home—Floating clound 1596

NetBeans下JSF框架编码简介

本文是介绍在 NetBeans IDE 中使用 JavaServer Faces 框架编码 Web 应用程序系列文章中的第一篇。通过本系列教程的学习,我们将创建名为 jAstrologer 的 Web 应用程序,此程序可获取用户的姓名和生日,然后返回用户的十二宫图、诞生石和星座等信息。JavaServer Faces (JSF) 框架是标准的 Java API,用于在 Web 应用程序中构建用

.NET博文收藏 337

jsf netbeans_NetBeans Java EE技巧9:从数据库创建JSF应用程序

jsf netbeans 您需要非常快速地创建数据库前端吗? NetBeans IDE允许人们以很少的代码就为一组数据库表开发JSF应用程序前端。 现在,本教程是一个老歌,但是一个好东西……对于那些不了解它的人来说,值得再次提及。 首先,创建您的应用程序。 在这种情况下,我通过选择“ New Project”->“ Maven”->“ Web Application”来创建Ma...

最佳 Java 编程 236

在Netbeans6中开发Ajax组建的JSF

  早些年,微软件的开发利器总是让Java阵营的IDE显得很弱智。微软种可视化的开发方式让无数的Java程序员向往。虽然Eclipse的出现在一定程度上缓解了这种心态,但还是有差距啊。长江后浪推前浪,前浪死在沙滩上。如今的NetBeans 6号称很牛,试一试,发现确实也比较牛,虽然不能完全与微软的IDE相提并论,但至少让我们看到真正可视化编程的曙光。下面就介绍一下如何在NetBeans6中可初

Eleven's Blog 1355
上一篇: NetBeans中JSF应用开发(5)
下一篇: JSP培训(1)——概述
Java_Web_Book
博客等级 码龄18年 8粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值