用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>
相关文章推荐
- QT生成PDF文件
- qt处理浏览器问题
- Ⅰ.2.6.3.6 如何测试 QTreeViews(QAbstractItemModels 和 QItemSelectionModels)中的 Items
- QT5中处理windows系统消息QAbstractNativeEventFilter
- VS IDE 下编译Qt 源码
- Ubuntu 15.04 安装配置 Qt + SQLite3
- Ubuntu 15.04 安装配置 Qt + SQLite3
- qt相关界面 博客 很好
- qt
- Ⅰ.2.6.3.5 如何测试 QTreeWidgets 中的 Items
- qt设置背景图片注意事项
- Qt/Embedded编译与安装
- 项目之CLQT开发总结
- Qt环境搭建(Qt Creator)
- Qt环境搭建(Qt Creator)
- MFC与Qt的内存管理
- QT 内存泄露 检测
- qt 多线程之间通讯
- QT---线程间通信(要先编译libqt-mt.so?)
- Qt使用QGraphicsView实现滑动窗体效果