Flyingis

Talking and thinking freely !
Flying in the world of GIS !
随笔 - 156, 文章 - 16, 评论 - 589, 引用 - 0
数据加载中……

重温Struts--Validator和Tiles

作者:Flyingis

今天要回顾的是ValidatorTiles以及简单的Plugin实现,刚刚登录blogjava就发现Mustang已经发了两篇好文《在Struts中使用Validator实现可配置的信息校验() ()》,本文则从实现流程来总结Validator的使用方法,并针对ValidatorTilesStruts PlugIn插件略谈一些个人心得。

Validator

在使用ActionForm时,将数据的验证工作放在validator()方法中虽说是一个可行的方法,但在ActionForm中编写特定的验证逻辑会降低ActionForm的重用性,并给系统的维护带来麻烦。Validator框架可以将验证逻辑移至ActionForm之外,实现Javascript客户端验证或服务器段验证。具体实现Validator验证步骤如下:

1.        Validator是以plugin的方式来扩充ActionServlet功能的,需要在Struts-config.xml中声明这个plugin

2.        导入Validator中的资源信息,用来向用户提示验证中出现的异常消息。Validator可以支持国际化信息,为每一个国际化信息提供对应的资源信息。

3.        利用validaton.xml文件来定义用户需要验证的每一个JSP表单中的每一个字段的验证规则,其中可以利用validator-rules.xml中已经设计好了的验证器,也可以自定义验证方式。

4.        客户端验证需要validator-rules.xml中已提供的验证规则,或是自定义规则,然后在jsp页面中声明<html:form action=“/action.do” onsubmit=“return validateActionForm(this);”>,加上可以生成实现验证的Javascript代码<html:javascript formName=“ActionForm” staticJavascript=“true”/>。服务器端验证同样需要validator-rules.xml中已提供的验证规则,或是自定义规则,另外,实现验证的ActionForm需要是DynaActionForm的子类,和客户端验证不同的是,在捕获服务器端错误消息时,jsp页面中需要嵌入代码

<html:messages id=“error”>

  <bean:write name=“error”/>

</html:messages>

在配置和设计Web系统验证功能的时候,需要注意的是要理解在validaton.xml中定义验证规则的时候每个参数的具体功能,我最初使用Validator的时候就因为参数混淆而验证失败,费了一点时间。还有就是自定义验证规则时,需要注意每个参数的具体含义,例如在某种情况下,validaton.xml<var-name>myproperty</var-name>中自定义的属性myproperty需要和自己编写的验证器类中的代码一致等等。

Tiles

Tiles是一个模板机制,它可以让网页的配置框架和内容分离,提供一个版面管理机制。通常有两种方式管理Tiles配置资源,一种使用XML,另一种使用JSP页面直接管理。

使用XML配置的Tiles可以支持国际化,例如可以另存为tiles-defs.xml并命名为tiles-defs_zh.xml,将encoding改为GB2312,这样可以在配置中使用中文。使用XML配置文件可以方便的实现版面配置和内容的分离,并且能扩充某个定义,达到重新定义其中所管理页面资源的目的。使用JSP页面直接定义管理版面的配置资源更为简单和灵活,同样可以和xml一样重新定义网页的地址。不使用JSP框架页面而是直接在JSP页面中使用配置页面,可以不用额外去定义管理文件,但缺点是无法重用这个页面定义的内容。

TilesCSS结合起来,基本上能满足一般页面控制的需要。

PlugIn插件

通过继承ActionSerlvet,重写它的init()方法,修改或增减它的初始化资源来达到改变ActionServlet功能的方法,这从软件架构角度上来讲并不是一个好方法。Struts1.1之后,可以通过PlugIn接口来实现动态增减ActionServlet功能的目的。ActionServlet加载后,会执行实现PlugIn接口的类的init()方法,在ActionServlet终止前,执行实现PlugIn接口的类的destroy()方法。ValidatorTiles就是利用这种方式来扩充Struts功能的。

写到这里,感觉使用好ValidatorTilesPlugIn插件最重要的就是对配置元素的理解,和程序调用流程的掌握,了解到Struts的插件机制是如何运转的,以此来扩充Web应用程序的功能,提供更好的用户体验。

posted on 2006-03-08 14:52 Flyingis 阅读(1970) 评论(2)  编辑  收藏 所属分类: Web 框架与开发

评论

# re: 重温Struts--Validator和Tiles  回复  更多评论   

再新增一个struts config文件,且在这个config中使用validator,但是validator不被装载,为什么?!!
2006-05-17 11:20 | lj

# re: 重温Struts--Validator和Tiles  回复  更多评论   

第一个config可以装载validator,第二个不行?
那你的config配置好了么?
2006-05-17 11:48 | Flyingis

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问