仓酷云

标题: ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别... [打印本页]

作者: 金色的骷髅    时间: 2015-1-16 22:39
标题: ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别...
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。asp.net|js  在年夜多半使用程序中,必需同意用户把数据输出到体系中,因而,校验请求几近存在于一切使用程序中。在本文中,这两个示例使用程序显现一个可用房间列表而且同意用户显现任何与该房间相干的预订信息。关于每一个房间都有一个响应的链接-间接展现给用户一个在线表单-你能够当即举行新的预订。上面显现出这两个使用程序的预订表单屏幕快照。

ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别...
登录/注册后可看大图

ASP.NET预订表单
ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别...
登录/注册后可看大图

JSF预订表单  在这些表单中,用户起首输出预订的团体或整体的称号。然后,用户输出一个新预订的入手下手和停止工夫。作为开辟者,你必需思索一个用户一切大概接纳的举动-它与该使用程序所希冀的大概纷歧致。ASP.NET和JSF都供应了响应的组件来匡助完成输出校验。ASP.NET校验控件被依靠到相干的表单项上而且一旦提交表单即校验该项数据。ASP.NET校验控件包含RequiredFieldValidator、RegularExpressionValidator、RangeValidator和CompareValidator。为了准确校验一个组件,开辟者必要编写定制代码,也能够利用一个CustomValidator组件。在一个ASP.NET页面的性命周期中,在数据被回寄到服务器之前,将利用CustomValidator举行校验。这是由于ASP.NET校验控件天生需要的JavaScript来完成在客户真个校验,从而削减服务器包袱。但是,ASP.NET老是在服务器端实行这类校验并确保老是举行校验。
<P>  JSF也供应了一些尺度的校验组件,只管不如ASP.NET供应的那末丰厚。为了编写你本人的校验逻辑,你也能够重载一个JSF组件的validate办法或把校验代办署理到完成Validator接口的另外一个类(你也能够编写你本人的校验组件,但这是一种更庞大的办理计划)。JSF缺少ASP.NET校验组件供应的内置的JavaScript功效。在恢复组件树以后,当即在服务器真个一个JSF页面上产生校验,可是,这必需是产生在挪用任何事务处置器之前。固然,你能够老是供应本人定制的JavaScript校验。有了这些基本,上面让我们剖析这些使用程序中的每一个用户的预订数据是怎样被得当校验的。

  这些表单相称复杂,可是仍旧存在要思索的校验成绩。关于初始定户来讲,同意一用户预订一个房间而且不输出一个名字来指定谁在预订意义其实不年夜。因而,应当请求有"ReservationTeam"域。在ASP.NET中,这是经由过程把一个RequiredFieldValidator控件从控件面板拖动到表单上完成的。ControlToValidate属性应当读取"lblReserveTeam"。在属性面板上,你能够指定用户应当收到的毛病文本。我增加了以下毛病动静:"YoumustenteraReservationTeam"。响应的形貌预订团队的JSF文本域组件其实不必要一个独自的校验组件,由于这个组件已包括一个"required"属性。复杂地反省这个属性就能够完成强制用户输出一个值。

  接上去,你能够限定"ReservationTeam"域的文本长度。你大概还记得响应的数据库域只要45个字符长。因而,用户应当被限定输出小于或即是45个字符。在JSF使用程序中,一个LengthValidator组件大概被从组件面板的Validators部分拖动到该域中而且指定45作为它的最年夜长度。至于它的毛病文本属性,你能够输出"ReservationTeamcannotexceed45characters"。ASP.NET并没有尺度的校验控件来限定域长度。而是,你能够依托RegularExpressionValidator控件-它同意经过一个正轨表达式(比方"^[sS]{,45}$")来指定最年夜长度。

  应当反省入手下手工夫和停止工夫以确保入手下手工夫小于或即是停止工夫。ASP.NET供应了一个CompareValidator-它合适于在尽年夜多半情形下对照两个域时。但是,既然这里利用了Calendar组件,那末你可不用完成这一功效-由于CompareValidator其实不撑持这个组件。在这个特定的例子中,我必需把这些日期赋值给两个文本域而且对之举行校验。另外一个选项是在Page_Load事务历程自己编写校验逻辑。由于JSF没有尺度的校验组件来对照这两个域,以是我必需编写校验逻辑-经由过程完成入手下手工夫组件的validate办法:

publicvoidcalendarStart_validate(FacesContextfc,UIComponentuic,Objecto){
 if(this.calendarStart.getSelectedDate().after(this.calendarEnd.getSelectedDate())){
 thrownewValidatorException(newFacesMessage
  ("Thestarttimemustcomebeforetheendreservationtime."));
 }
}
  你将注重到,在下面的JSF校验逻辑中援用了一个FacesMessage组件。在JSF中,请求利用一个动静组件来显现与域相干的输入文本。为此,我从组件面板上增添了一个Message组件而且把它依靠到的准确表单域上-经由过程把它拖动到这个域上体例完成。一旦这一操纵未完成,那末当校验失利时,就会显现针对响应的堕落组件的毛病动静。在ASP.NET中,你不用实行这一步,由于这些控件本身就可以够显现毛病动静。

  另外一组主要的JSF组件被称作"转换器"。这些组件卖力完成在表双数据和工具模子之间的往返转换。在JSF中有一些默许的转换器可用来完成一般转换(如把String转换成Integer,把String转换成Date等)。关于挪用使用程序工具的更加庞大的转换,能够创立定制的转换器。正如你在下面的代码能够看到的,这个JSF日历组件有一个办法getSelectedDate。这是由于这个组件已包含它本人的转换器。只管这个JSF使用程序不会请求利用转换器,可是你应当熟习JSF转换器的利用,由于它们有助于削减代码的编写和运转时候转换毛病。比拟之下,ASP.NET并没有供应一组尺度的转换器。

  别的,还应当在这些表单上到场别的一种校验。该校验将查询数据库以确保不存在与用户选择工夫相抵触的预订。为了完成这里大概的庞大性处置,你应当在ASP.NET程序中利用一个CustomValidator控件。一样,在JSF中,这类逻辑将被安排在这个组件的validate办法或被代办署理各处理校验的另外一个类中。

ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别...
登录/注册后可看大图

增加ASP.NET校验控件
ASP.NET教程之当ASP.NET撞上JSF之校验输出体例的差别...
登录/注册后可看大图

增加JSF校验组件说句实话,Java跨平台根本就不是外行人想想的那种,一次编译,处处运行。
作者: 简单生活    时间: 2015-1-18 20:16
以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。
作者: 乐观    时间: 2015-1-23 11:21
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
作者: 分手快乐    时间: 2015-1-31 15:47
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
作者: 活着的死人    时间: 2015-2-6 20:24
现在的ASP.net分为两个版本:1.1和2.0Asp.net1.1用VS2003(visualstudio2003)编程。Asp.net2.0用VS2005(visualstudio2005)编程。现在一般开发用的是VS2003。
作者: 再现理想    时间: 2015-2-18 13:45
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
作者: 莫相离    时间: 2015-3-6 07:53
这也就是最近几年来随着各种新的后台技术的诞生,CGI应用在Internet上越来越少的原因。CGI方式不适合大访问量的应用。
作者: 不帅    时间: 2015-3-12 22:22
在一个项目中谁敢保证每天几千万甚至几亿条的数据不丢失?谁敢保证应用的高可靠性?有可以借签的项目吗?




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2