当应用程式要求使用者输入资料时,必然考虑到使用者输入资料之正确性,对于使用者的输入必须进行检验,检验必要的两种验证是语法检验(Synatic Validation)与语意检验(Semantic Validation)。
语法检验是要检查使用者输入的资料是否合乎我们所要求的格式,最基本的就是检查使用者是否填入了栏位值,或是栏位值的长度、大小值等等是否符合要求。语意检验是在语法检验之后,在格式符合需求之后,我们进一步验证使用者输入的资料语意上是否正确,例如检查使用者的名称与密码是否匹配。
在 简单的导航 (Navigation) 中,我们对使用者名称与密码检查是否匹配,这是语意检验,我们可以使用JSF所提供的标准验证器,为其加入语法检验,例如:
index.jsp
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@page c%>
<html>
<head>
<title>验证器示范</title>
</head>
<body>
<f:view>
<h:messages layout="table" style="color:red"/>
<h:form>
<h3>请输入您的名称</h3>
<h:outputText value="#{user.errMessage}"/><p>
名称: <h:inputText value="#{user.name}"
required="true"/><p>
密码: <h:inputSecret value="#{user.password}"
required="true">
<f:validateLength minimum="6"/>
</h:inputSecret><p>
<h:commandButton value="送出"
action="#{user.verify}"/>
</h:form>
</f:view>
</body>
</html>
在<h:inputText>、</h:inputSecret> 中,我们设定了required属性为true,这表示这个栏位一定要输入值,我们也在</h:inputSecret>设定了<f: validateLength>,并设定其minimum属性为6,这表示这个栏位最少需要6个字元。
这一次在错误讯息的显示上,我们使用<h:messages>标籤,当有验证错误发生时,相关的错误讯息会收集起来,使用<h:messages>标籤可以一次将所有的错误讯息显示出来。
下面是一个验证错误的讯息显示:
JSF标准验证器
JSF提供了三种标准验证器:<f:validateDoubleRange>、<f:validateLongRange>、<f:validateLength>,您可以分别查询它们的 Tag Library Documentation,瞭解他们有哪些属性可以使用,或者是参考 Using the Standard Validators 这篇文章中有关于标准验证器的说明。
standardvalidators-1.jpg