页面输入验证 Validation
ASP.NET提供验证功能的服务器控件: CompareValidator验证两个控件输入之间的比较,RangeValidator检查用户的输入是否在指定的上限和下限之间;RegularExpressionValidator 控件检查输入是否与某个正则表达式所定义的模式相匹配(社会保障号、电子邮件地址、电话号码、邮政编码等);RequiredFieldValidator 控件确保用户不会略过某个输入;CustomValidator 控件创建自定义服务器和客户端验证代码。稍后会举例说明。XML:namespace prefix = o ns = "urn:schemas-microsoft-com:Office:office" />
Java web框架通常会把验证规则提出来,放在一个验证规则文件里。apache struts提供验证两种方式。一种是重载org.apache.struts.action.ActionForm类的validate方法,一种是定义Validator Plug-In文件,validator-rules.xml。Apache Cocoon也提供了类似的验证规则文件。稍后举例说明。
ASP.net的例子
摘自.Net框架文档,其余部分省略,只保留了关于RegularExpressionValidator的部分。本例中,id为RegularExpressionValidator1的控件的ControlToValidate属性为TextBox1,所以,RegularExpressionValidator1负责验证TextBox1是否符合正则表达式"d{5}"——5个数字。
runat="server"/>
id="RegularExpressionValidator1"
ControlToValidate="TextBox1"
ValidationExpression="d{5}"
Display="Static"
EnableClientScript="false"
ErrorMessage="Zip code must be 5 numeric digits"
runat="server"/>
Apache Struts的例子
下面的例子从Apache Struts的用户文档中摘录出来。Apache Struts提供的Validation机制非常强大,能够实现基于其它输入域的条件验证,即,如果另外一个或几个输入域都符合相应的情况,那么,验证当前域是否符合某种条件。
RM name="dependentlistForm">
property="firstName" indexedListProperty="dependents"
depends="requiredif">
field[0]
lastName
field-indexed[0]
true
field-test[0]
NOTNULL
property="dob"
indexedListProperty="dependents"
depends="requiredif,date">
field[0]
lastName
field-indexed[0]
true
field-test[0]
NOTNULL
property="coverageType"
indexedListProperty="dependents"
depends="requiredif">
field[0]
lastName
field-indexed[0]
true
field-test[0]
NOTNULL
field[1]
insureDependents
field-test[1]
EQUAL
field-value[1]
true
field-join
AND
Apache Cocoon的例子
下面的例子是Apache Cocoon的教学程序中的文件。对id和name两个域进行验证。同时,这个文件定义了页面元素和数据库数据之间的绑定。下一节就要阐述这个问题。
<root>
personnel
dbcol="id" type="int" mode="manual"/>
Database Driven Page
正如上一节最后一个例子(Apache Cocoon)所示,很多web开发框架提供页面元素和数据库字段的直接绑定。
.NET 框架包含三个便于显示大量数据的控件:Repeater 控件、DataList 控件和 DataGrid 控件。这三个控件都使用相似的数据绑定过程,绑定到DataSet、sqlDataReader或DataView。下面的代码示例从.Net框架文档摘录,显示如何将 SQL 数据库查询返回的 DataSet 绑定到 DataGrid 控件。
Simple SELECT to a DataGrid Control
id="MyDataGrid" runat="server"
Width="700"
BackColor="#ccccff"
BorderColor="black"
ShowFooter="false"
CellPadding=3
CellSpacing="0"
Font-Name="Verdana"
Font-Size="8pt"
HeaderStyle-BackColor="#aaaadd"
EnableViewState="false"
/>
多语言支持
多语言支持策略基本上都采取一种类似于查多本字典的模式。先举一个类比例子来说明,比如,我们有英英字典,英汉字典,英德字典,英法字典,对于一个英文单词,每本字典都有对应语言的单词,满足不同语言的用户的需要。我们把要查的英文单词称为key,所有的字典称为资源文件resource file,查出来的对应语言的单词,就是应该显示给用户的内容。、
上述模式简单而常见,不再列出例子代码,下面只进行简单的说明。
.Net框架通过一个重要的资源管理类System.Resources.frameworkSDK.CHS/cpref/html/frlrfsystemresourcesresourcemanagerclasstopic.htm">ResourceManager,来管理在应用程序中使用的不同特定于区域性的资源。调用方可使用 GetObject 和 GetString 两种方法访问特定区域性的资源。这两个方法的参数都包括一个key,和一个本地语言信息。.Net的资源文件后缀是DLL。
Apache Struts项目的类org.apache.struts.util.MessageResources的getMessage方法提供了类似的功能。Apache Struts项目提供了一个扩展的HTML Tag —— Message,也起着多语言支持、本地化的作用。Struts的资源文件后缀是properties,格式按照java properties文件的格式。
Apache Cocoon项目提供了一类称为i18n的Transformer,用来实现多语言支持。常用的标记如和
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/10752043/viewspace-993466/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/10752043/viewspace-993466/