- 浏览: 437451 次
- 性别:
- 来自: 宁波
-
文章分类
最新评论
-
coosummer:
推荐使用http://buttoncssgenerator.c ...
11大CSS按钮教程 -
a754782339:
楼主你好,我现在遇到的问题就是json与hibernate使 ...
Json-lib 与 hibernate 共同使用的问题 -
ying890:
非常感谢!
Extjs 处理 Date 对象 -
xa_zbl:
加了以后,报这个错误:TypeError: b[this.vt ...
ExtJs自定义Vtype示例 -
nbkangta:
dampce032 写道如果我想取到Person下Addres ...
Json-lib 与 hibernate 共同使用的问题
原文地址:http://tech.ddvip.com/2008-12/122880213598576.html
struts2的验证器是用的xwork里面的验证,自定义验证器就是根据源码继承已有的字段验证器而来。具体步骤如下:
1.展开xwork-2.0.4.jar,com.opensymphony.xwork2.validator.validators目录下有个default.xml,将它复制到项目根目录下改名叫validators.xml。
验证框架首先在根目录下找validators.xml文件,没找到validators.xml文件,验证框架将调用默认的验证设置,即default.xml里面的配置信息.
4.新建一个类(身份证验证为例:类名CardIdFieldValidator)继承FieldValidatorSupport,实现validate方法。
5.在validators.xml中添加一个validator节点,和其他validator一样指定名称和类名,这里指定的name就是你将来要是使用的类型名字。
<validator name="cardid" class="org.siyn.commons.validators.CardIdFieldValidator"/>到此自定义验证器就完成,剩下的就和使用自带的验证器一样了
6.新建action,继承ActionSupport或Action都行,写上相应需要验证的属性字段
7.新建验证文件xxxx-validation.xml,这个xxxx就是你前面action的类名字,xxx-xxx-validation.xml第二个xxx表示是jsp中的form提交action。
8.配置struts.xml,以及action.
struts2的验证器是用的xwork里面的验证,自定义验证器就是根据源码继承已有的字段验证器而来。具体步骤如下:
1.展开xwork-2.0.4.jar,com.opensymphony.xwork2.validator.validators目录下有个default.xml,将它复制到项目根目录下改名叫validators.xml。
验证框架首先在根目录下找validators.xml文件,没找到validators.xml文件,验证框架将调用默认的验证设置,即default.xml里面的配置信息.
4.新建一个类(身份证验证为例:类名CardIdFieldValidator)继承FieldValidatorSupport,实现validate方法。
package org.siyn.commons.validators; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldValidatorSupport; public class CardIdFieldValidator extends FieldValidatorSupport { public void validate(Object object) throws ValidationException { // 获得字段的名字 String fieldName = getFieldName(); // 获得输入界面输入的值 String value = getFieldValue(fieldName, object).toString(); if (value == null || value.length() <= 0) return; if(value.length()!=15 && value.length()!=18 )//身份证必须是15或18位! addFieldError(fieldName, object); if(value.length()==15) validate15CardId(value, object); if(value.length()==18) validate18CardId(value, object); } /** *//** * <p>18位身份证验证</p> * 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 * 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 * 第十八位数字(校验码)的计算方法为: * 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 * 2.将这17位数字和系数相乘的结果相加。 * 3.用加出来和除以11,看余数是多少? * 4.余数只可能有0 1 2 3 4 5 6 7 8 9 10这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2。 * 5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。 * @date Oct 18, 2008 * @param value * @param object */ public void validate18CardId(String value, Object object) { // 获得字段的名字 String fieldName = getFieldName(); String tempStr = value.substring(0,17); String sourceCheckCode = value.substring(17,18); String checkCode = ""; int[] a = new int[17]; int i = 0; try { while(i<17){ a[i] = Integer.parseInt(tempStr.substring(i,i+1)); i++; } } catch (NumberFormatException e) { addFieldError(fieldName, object); } int mod = (a[0]*7+a[1]*9+a[2]*10+a[3]*5+a[4]*8+a[5]*4+a[6]*2+a[7]*1+a[8]*6+a[9]*3+a[10]*7 +a[11]*9+a[12]*10+a[13]*5+a[14]*8+a[15]*4+a[16]*2)%11; switch (mod){ case 10: checkCode = "2"; break; case 9: checkCode = "3"; break; case 8: checkCode = "4"; break; case 7: checkCode = "5"; break; case 6: checkCode = "6"; break; case 5: checkCode = "7"; break; case 4: checkCode = "8"; break; case 3: checkCode = "9"; break; case 2: checkCode = "x"; break; case 1: checkCode = "0"; break; case 0: checkCode = "1"; break; } if(!sourceCheckCode.equalsIgnoreCase(checkCode)) addFieldError(fieldName, object); } /** *//** * <p>15位身份证验证</p> * * 只做了数字验证 * @date Oct 18, 2008 * @param value * @param object */ public void validate15CardId(String value, Object object) { String fieldName = getFieldName(); int i = 0; try { while(i<15){ if(!Character.isDigit(value.charAt(i))) addFieldError(fieldName, object); i++; } } catch (NumberFormatException e) { addFieldError(fieldName, object); } } }
5.在validators.xml中添加一个validator节点,和其他validator一样指定名称和类名,这里指定的name就是你将来要是使用的类型名字。
<validator name="cardid" class="org.siyn.commons.validators.CardIdFieldValidator"/>到此自定义验证器就完成,剩下的就和使用自带的验证器一样了
6.新建action,继承ActionSupport或Action都行,写上相应需要验证的属性字段
7.新建验证文件xxxx-validation.xml,这个xxxx就是你前面action的类名字,xxx-xxx-validation.xml第二个xxx表示是jsp中的form提交action。
<field name="student.sfzh"> <field-validator type="requiredstring" short-circuit="true"> <message>身份证号不能为空.</message> </field-validator> <field-validator type="cardid"> <message>身份证号格式不正确.</message> </field-validator> </field>
8.配置struts.xml,以及action.
发表评论
-
还在用循环吗?Java复制文件内容NIO版本
2013-06-25 21:06 1687网上的文件操作目前都停留在老的IO API当中,这大概就是 ... -
Java 用泛型实现元组
2013-03-10 10:27 0Python, Ruby等动态语言的流行,我认为其中很大的一 ... -
试着解释神奇的7循环
2013-03-01 19:13 1390作为一名非计算机科班出身的程序员对计算机的底层架构知之甚少, ... -
Maven集成Jetty使用resteasy无法使用的问题
2013-02-12 14:44 2349最近在学习JAX-RS, 使用的是Jboss的 restea ... -
经常要忘记。。。Ubuntu install jdk 7
2013-01-14 20:33 960来自 http://blog.csdn.net/yang_h ... -
常见数字类型long, int, short和byte数组的转换
2012-11-05 17:13 1821show you the code~! /** * ... -
Java系统属性
2012-10-22 11:31 2311似乎从来没仔细看过java System.getPropert ... -
Java并发编程实践之Executor框架
2012-10-20 18:19 967java中任务的抽象不是Thread,而是Executor! ... -
《重构——改善既有代码的设计》读书笔记
2012-08-04 13:39 1275最近公司开展读书月活动,免费提供书籍要求读完上交读书笔记一篇 ... -
Java并发编程之CyclicBarrier实例
2012-06-24 15:18 1534最近在看《Java并发编程实战》,对于想学习Java多线程编程 ... -
使用 Eclipse Memory Analyzer 进行堆转储文件分析
2010-12-26 00:00 1722转自IBM DEVELOPER WORKS 对于大型 J ... -
java常见笔试题
2009-12-03 12:52 1378第一,谈谈final, finally, ... -
Myeclipse部署项目到服务器时,WEB-INF\classes中无文件解决方法
2009-07-08 10:49 6381今天重新从SVN将项目迁出了一下,在用Myeclipse部署项 ... -
JDBC获取数据库所有表
2009-06-21 15:49 9282当初在JDBC还没研究透的时候,就偷懒去用了hibernate ... -
[Jakarta Commons] 使用StringUtil类
2009-02-17 17:47 1397原文地址:http://www.blogjava.net/zJ ... -
Json-lib 如何转换日期格式的字段 json
2009-02-11 19:54 4969json : {password:"234234&q ... -
用 GlassFish v2 替换 Tomcat 5.x
2009-01-24 22:17 1832羡慕ROR的热部署啊,无论修改什么基本都可以热部署,tomca ... -
文件操作类
2009-01-04 16:47 1947把网上的文件操作类整合了一下,算是转帖 package ... -
Hibernate Gossip: Criteria 進階查詢
2008-12-29 00:51 1268使用Criteria進行查詢時,不僅僅能組合出SQL中wher ... -
Hibernate3的DetachedCriteria支持
2008-12-29 00:02 1215作者:robbin出处:Java视线责任编辑:方舟 居然隔了 ...
相关推荐
Validator是基于JavaScript技术的伪静态类和对象的自定义属性,可以对网页中的表单项输入进行相应的验证,允许同一页面中同时验证多个表单,熟悉接口之后也可以对特定的表单项甚至仅仅是某个字符串进行验证。...
CustomValidator则用于自定义验证逻辑。 4. ASP.NET技术优势:ASP.NET具有丰富的控件库,可以在Visual Studio(VS)中方便地进行断点调试,使用拖拽方式设计页面。然而,ASP.NET程序并不支持JAVA语言编写,它主要...
- "新增门票"和"修改门票"功能可能需要自定义Action类,处理表单提交,进行业务逻辑验证和数据持久化。 2. **Hibernate框架**: - Hibernate是ORM(Object-Relational Mapping)工具,它将Java对象与数据库表进行...
- **表单(Form)**:提供了各种表单控件,如文本输入框、选择框、日期选择器等,便于用户输入和验证数据。 - **对话框(Dialog)**:用于弹出式窗口,常用于显示详细信息、用户确认操作或者执行复杂任务。 - **...
包括:源程序工程文件、Proteus仿真工程文件、配套技术手册等 1、采用51/52单片机作为主控芯片; 2、采用1602液晶显示; 3、采用5*8矩阵键盘输入; 4、功能键包括:复位键(RST),回删键(DEL),确定键(OK),第二功能切换(2U),背光灯键(LED); 5、运算均为单精度浮点数,包括: 加(+),减(-),乘(x),除(÷), e底指数(e^n),N次方(x^n),开N次方(sqrt), 正弦(sin),余弦(cos),正切(tan), 对数(log), 阶乘(n!)(n<35), 排列(Arn), 累加(∑), *开启第二功能(2U)后可用: 反正弦(asin),反余弦(acos),反正切(atan), 组合(Crn)
内容概要:本文详细介绍了如何利用三菱FX2N系列PLC构建机械手控制系统。主要内容涵盖电路图设计、IO表配置、源程序编写以及单机组态。文中提供了具体的梯形图编程实例,展示了如何通过PLC精确控制机械手的各种动作,如抓取、移动和放置。此外,还分享了许多实用的调试技巧和注意事项,强调了传感器状态交叉验证和关键动作的时间守护机制。通过这些内容,读者可以全面了解PLC在机械手控制中的应用。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和机械手控制感兴趣的初学者和有一定经验的研发人员。 使用场景及目标:适用于需要设计和实施机械手控制系统的工业场合,帮助工程师掌握PLC编程技巧,提高机械手控制系统的稳定性和可靠性。 其他说明:文章不仅提供理论指导,还包括大量实战代码和调试经验,有助于读者快速上手并在实践中不断优化系统性能。
内容概要:本文档提供了用于生成具有时尚性感元素的美女跳舞图像的提示词指南。文档内容包括角色设定为擅长描绘时尚与超现实主义图片的创作者,背景设定强调女性形象,偏好展现性感漂亮女孩的镜头表达。目标在于根据用户指令创作三幅统一风格的图像,注重色彩搭配和高清效果,同时确保每张图片都具备半身像、真实感和电影效果的特点。文档还给出了具体的输出示例,详细描述了人物形象、服装搭配以及场景布置等要素,旨在为用户提供满意的图像生成服务。; 适合人群:对图像生成感兴趣,尤其是喜欢带有时尚性感元素的美女图像的用户。; 使用场景及目标:①根据用户提供的简单场景信息(如户外或室内)生成三幅不同场景但风格统一的赛博朋克风格美女跳舞图像;②确保生成的图像符合特定的要求,如半身像、真实感、电影效果、性感服装、特定灯光效果等;③通过询问用户对生成图像的满意度来保证服务质量。; 其他说明:文档明确了图像生成的工作流程,从接收用户指令到根据反馈调整生成内容,确保整个过程高效且满足用户需求。同时,文档还限制了生成图像的具体条件,如场景必须为赛博朋克风格、不能出现鞋子和其他人等,以保证图像的独特性和一致性。
题目描述 1.问题描述 一个正整数如果任何一个数位不大于右边相邻的数位,则称为一个数位递增的 数,例如1135是一个数位递增的数,而1024不是一个数位递增的数。 给定正整数n,请问在整数1至n中有多少个数位递增的数? 输入格式 输入的第一行包含一个整数n。 输出格式 输出一行包含一个整数,表示答案。 样例输入 30 样例输出
内容概要:本文详细介绍了基于非对称纳什谈判的多微网电能共享运行优化策略及其MATLAB代码实现。首先阐述了纳什谈判和合作博弈的基本理论,然后将多微网电能共享合作运行模型分解为微网联盟效益最大化和合作收益分配两个子问题。文中展示了如何通过交替方向乘子法(ADMM)进行分布式求解,确保各微网隐私安全。此外,还探讨了电转气(P2G)和碳捕集(CCS)设备的应用,以实现低碳调度。最后,通过具体代码示例解释了模型的构建、求解及优化过程。 适合人群:对电力系统优化、博弈论、MATLAB编程感兴趣的科研人员和技术开发者。 使用场景及目标:适用于希望深入了解多微网电能共享优化策略的研究者,旨在提高微网联盟的整体效益并实现公平合理的收益分配。同时,该策略有助于降低碳排放,提升系统的环境友好性和经济性。 其他说明:文章提供了详细的代码注释和调试技巧,帮助读者更好地理解和实现这一复杂的优化策略。
内容概要:本文详细介绍了如何利用MATLAB进行六轴机械臂的视觉控制系统仿真。首先,通过MATLAB的图像处理工具箱捕捉并处理实时视频流,使用HSV颜色空间进行颜色阈值处理,从而定位红色小球的位置。然后,借助Robotics Toolbox中的逆运动学模块,将摄像头获取的目标位置转换为机械臂的关节角度,确保机械臂能够精准地追踪目标。此外,还讨论了路径规划的方法,如使用五次多项式插值和平滑滤波器,使机械臂的动作更加流畅。文中强调了实际应用中可能遇到的问题及其解决方法,如奇异点处理、坐标系转换和机械臂的速度限制等。 适合人群:具有一定编程基础和技术背景的研究人员、工程师以及对机器人视觉控制感兴趣的开发者。 使用场景及目标:适用于希望在MATLAB环境中快速搭建和测试机械臂视觉控制系统的科研人员和工程师。主要目标是掌握从图像处理到机械臂控制的完整流程,理解各模块的工作原理,并能够在实际项目中应用。 其他说明:本文不仅提供了详细的代码示例,还分享了许多实用的经验和技巧,帮助读者更好地理解和优化仿真系统。同时提醒读者注意仿真与现实之间的差异,如摄像头延迟、机械臂传动误差等问题。
KUKA机器人相关文档
KUKA机器人相关文档
内容概要:本文详细介绍了三相变流器的模型预测控制(MPC)在Matlab/Simulink环境下的实现过程。首先,初始化程序设置了关键参数,如直流母线电压、开关频率和控制周期等,确保系统的稳定性和效率。接着,通过MPC_sfun.c实现了核心控制算法,采用状态空间模型进行滚动预测,提高了系统的动态响应能力。最后,利用out.m生成高质量的仿真结果图,展示了负载突变时的快速恢复特性,并提供了优化建议,如调整代价函数权重和引入软约束等。 适合人群:电力电子工程师、控制系统研究人员以及对MPC感兴趣的科研工作者。 使用场景及目标:适用于需要精确控制电压电流的场合,如电动汽车充电站、风力发电系统等。主要目标是提高系统的动态响应速度、降低总谐波失真(THD),并在性能和计算负担之间取得平衡。 其他说明:文中提到了一些实用技巧,如控制周期的选择、预测步长的优化、图形绘制的最佳实践等,有助于读者更好地理解和应用MPC控制策略。同时,强调了在实际应用中需要注意的问题,如避免过高开关频率导致器件损坏等。
网络炒作策划要点解析.ppt
内容概要:本文详细介绍了三菱Q03UDE PLC使用SFC(顺序功能图)编程方法在16轴伺服控制系统中的应用。文章首先概述了硬件配置,包括500个IO点、16轴伺服控制以及触摸屏的画面编程。接着深入探讨了SFC编程的具体实现方式,如将复杂的轴控制分解为独立的流程块,利用并行结构解决多轴同步问题,通过触摸屏实时监控和反馈SFC步状态,以及如何高效管理和复用输出点。此外,文章还讨论了SFC在状态管理和报警处理方面的优势,并提供了具体的代码示例来展示其实现细节。最后,作者分享了一些实用技巧和注意事项,强调了SFC编程相比传统梯形图的优势。 适合人群:从事工业自动化控制系统的工程师和技术人员,尤其是对三菱PLC和SFC编程感兴趣的读者。 使用场景及目标:适用于需要进行复杂多轴伺服控制项目的工程师,旨在提高调试效率、减少信号冲突、缩短新人培养周期,并提供一种更加直观和高效的编程方法。 其他说明:文中提到的实际项目经验有助于读者更好地理解和应用SFC编程技术,同时也提醒了一些常见的错误和陷阱,帮助读者避免不必要的麻烦。
内容概要:本文详细介绍了如何使用LabVIEW实现与三菱FX3U PLC的串口通讯,采用Modbus无协议通讯方式进行简单读写操作。主要内容包括PLC通讯参数配置、LabVIEW工程结构搭建、Modbus报文构造方法以及具体的读写数据模块实现。文中提供了详细的代码示例和注意事项,帮助读者快速理解和实践这一通讯过程。 适合人群:对工业自动化有一定兴趣的技术人员,尤其是熟悉LabVIEW和三菱PLC的工程师。 使用场景及目标:适用于需要将LabVIEW作为上位机与三菱FX3U PLC进行串口通讯的应用场合,如工业控制系统、实验教学等。主要目标是掌握Modbus协议的基础知识及其在LabVIEW中的具体实现。 其他说明:文章还提供了一些常见的错误排查方法和实用技巧,如CRC校验的处理、地址偏移量的注意事项等。此外,附带了完整的源码供读者下载和参考。
图像检索_基于零样本开集的草图图像检索系统实现_附项目源码+流程教程_优质项目实战
基于C语言写的电话簿程序
包括:源程序工程文件、Proteus仿真工程文件、配套技术手册等 1、采用51单片机作为主控芯片; 2、采用1602液晶显示检测电压值,范围0~20V; 3、采用ADC0808进行模数转换;
内容概要:本文介绍了一个专业的剧本杀创作作家AI。它能根据客户需求创作各种风格和难度的剧本杀剧本,并提供创作建议和修改意见。其目标是创造引人入胜、逻辑严密的剧本体验。它的工作流程包括接收理解剧本要求、创作剧本框架情节、设计角色背景线索任务剧情走向、提供修改完善建议、确保剧本可玩性和故事连贯性。它需保证剧本原创、符合道德法律标准并在规定时间内完成创作。它具备剧本创作技巧、角色构建理解、线索悬念编织、文学知识和创意思维、不同文化背景下剧本风格掌握以及剧本杀游戏机制和玩家心理熟悉等技能。; 适合人群:有剧本杀创作需求的人群,如剧本杀爱好者、创作者等。; 使用场景及目标:①为用户提供符合要求的剧本杀剧本创作服务;②帮助用户完善剧本杀剧本,提高剧本质量。; 阅读建议:此资源详细介绍了剧本杀创作作家AI的功能和服务流程,用户可以依据自身需求与该AI合作,明确表达自己的创作需求并配合其工作流程。