您的位置:首页 > 编程语言 > Java开发

NetBeans中JSF应用的开发(3)

2012-05-02 16:53 134 查看
目标:使用标准的验证器和转换器

设置某个域为必填的

首先我们需要做的是确保用户为name域输入一些信息,我们可以通过使用inputText组件的required属性轻松做到。

1.
打开greeting.jsp,然后修改inputText组件如下:
<p>Enteryourname:<h:inputTextvalue="#{UserBean.name}"

id="name"required="true"/>

<h:messagefor="name"/></p>

我们必须做的是给名字输入框一个ID,这样我们可以指定消息是哪个组件的消息。我们已经指定这个域是必填的,因此如果用户不输入任何信息,Web应用将显示错误信息。

2.
运行工程,然后不输入任何信息就点击Submit,您将会得到如下错误信息:



使用转换器

现在我们需要把我们的生日作为日期来处理,而不是任意的字符串。JSF框架提供了很多转换器,使用这些转换器可以把文本转换成对象类型,例如布尔类型等等。在转换数据的过程中,要验证数据对于要转换成的数据类型来说是否有效。对于我们的生日输入域来说非常方便,因为我们可以指定日期的格式,对输入进行验证,并同时得到一个Date对象。

1.
打开greeting.jsp,修改生日输入框inputText组件如下:
<p>Enteryourbirthday:<h:inputTextvalue="#{UserBean.birthday}"

id="birthday"required="true">

<f:convertDateTimepattern="dd/MM/yyyy"/>

</h:inputText>(dd/mm/yyyy)

<h:messagefor="birthday"/></p>

我们必修做的是给生日一个ID,这样我们可以指定消息显示的时候是对应哪个组件的。然后把转换器的格式设置为dd/MM/yyyy。如果用户输入的信息不能匹配这个格式,将重新显示greeting.jsp文件,并显示错误信息。我们同样指定了这个域是必须的,就像姓名域一样。

2.
现在需要把UserBean.java中生日属性的类型修改为Date。打开UserBean.java,修改如下(粗体部分),并添加一个import语句,引入java.util.Date。
privateStringname;

privateDatebirthday;

...


publicDategetBirthday(){

returnbirthday;

}


publicvoidsetBirthday(Datebirthday){

this.birthday=birthday;

}


3.
运行工程。如果不输入日期就点击Submit,你将得到下面的错误信息:



如果你输入了一个无效的日期,你将得到下面的错误信息:



标准转换器参考书上177页。
标准验证器参考书上186页。
书:《JavaEE5实用教程》
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: