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

用Qt写的一个仿Windows记事本程序

2015-11-18 13:10 323 查看

概述

        Struts 2.0目前支持基本验证,客户端验证,Ajax验证,因为Ajax验证需要DWR和Dojo的支持,Dojo的性能一向不是很好,而且使用相当复杂,因此 个人倾向于仅使用基本验证功能,下面介绍如何使用基本验证。

注册验证器

        如果需要添加自定义的验证器实现,必须进行注册,最简单的注册方法是创建一个validators.xml,保存在WEB-INF/classes目录 下,如果仅使用系统提供的验证器,这一步可以省略。

启动拦截器

        要使验证生效,需要针对请求配置验证拦截器。注意:框架提供的验证拦截器会在发生验证错误时,继续执行Action,很怪异的行为。如果验证失败要阻止继续执行,可以在执行每个Action之前判断是否有字段错误决定是否继续执行。

定义验证规则

        验证规则可以针对每一个Action,比如 ActionName-validation.xml ,也可以针对Action的接口和超类。目前有两种验证器,通用验证器和字段验证器,通用验证器有更高的优先级。

        配置验证器时可以指定short-circuite属性,以终止其他验证器执行。 如果发生验证错误,通用验证器将停止其他验证器的运行,而字段验证器只会停止针对同一个字段的其他验证器的执行。

检索验证错误

        Action提供getFieldErrors和getActionErrors方法用来获取字段验证错误,和通用验证错误。另外Struts提供<s:fielderror>和<s:actionerror>标记用于检索错误。</s:actionerror></s:fielderror>

        注意:

此标记需要Freemark的支持,请确认freemark库文件的存在。

UI标记只在特定的theme才能生效。

        比如使用XHTML标记,需要在HTML文件的head区域使用如下标记标识使用的theme:

xml 代码

<head>  

        <s:head theme="xhtml"/>  

head>  

  

<body>  

        <s:fielderror/>  

body>  

 实践

笔者是使用spring整合struts的,在执行验证时发现,如果同一个字段多次验证失败,会保存多个相同的验证消息,也就是上一次请求的错误信息并没有清除点,进一步讲应该是两次请求使用的是同一个Action实例,是什么原因呢?

解决方案:后来发现是spring配置的action实例缺省是基于会话的,也就是在内存中会缓存action实例,更改配置的scope属性即可,示例如下:

xml 代码

<?xml version="1.0" encoding="UTF-8"?>  

<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN 2.0//EN" "http://www.springframework.org/dtd/spring-beans-2.0.dtd">  

<beans default-autowire="byName" default-lazy-init="true">  

    <bean id="customerAction" class="org.quickj.samples.web.CustomerAction" scope="request"/>  

</beans> 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: