validate.xml文件中正则表达式不起作用的解决方案)

前台页面(附代码):

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%><!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" ""><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Insert title here</title></head><body><form action="testPeopleAction.action" method="post"><table align="center"><caption>类型转换的错误处理</caption><tr><td>用户名 <input type="text" name="name"></td></tr><tr><td>密码<input type="password" name="password"></td></tr><tr><td>用户年龄<input type="text" name="age"></td></tr><tr><td>用户生日<input type="text" name="birth"></td></tr><tr align="center"><td colspan="2"><input type="submit" value="登录"><input type="reset" value="重填"></td></tr></table></form></body></html>Action部分:

package com.hcj.action;import java.util.Date;import com.opensymphony.xwork2.ActionSupport;public class TestPeopleAction extends ActionSupport {<span style="white-space:pre"></span>private String name;<span style="white-space:pre"></span><span style="white-space:pre"></span>private String password;<span style="white-space:pre"></span><span style="white-space:pre"></span>private int age;<span style="white-space:pre"></span><span style="white-space:pre"></span>private Date birth;<span style="white-space:pre"></span>public String getName() {<span style="white-space:pre"></span>return name;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public void setName(String name) {<span style="white-space:pre"></span>this.name = name;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public String getPassword() {<span style="white-space:pre"></span>return password;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public void setPassword(String password) {<span style="white-space:pre"></span>this.password = password;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public int getAge() {<span style="white-space:pre"></span>return age;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public void setAge(int age) {<span style="white-space:pre"></span>this.age = age;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public Date getBirth() {<span style="white-space:pre"></span>return birth;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public void setBirth(Date birth) {<span style="white-space:pre"></span>this.birth = birth;<span style="white-space:pre"></span>}<span style="white-space:pre"></span>public TestPeopleAction() {<span style="white-space:pre"></span>super();<span style="white-space:pre"></span>}<span style="white-space:pre"></span><span style="white-space:pre"></span>@Override<span style="white-space:pre"></span>public String execute() throws Exception {<span style="white-space:pre"></span>// TODO Auto-generated method stub<span style="white-space:pre"></span>return super.execute();<span style="white-space:pre"></span>}}在该action类同一目录下新建一个ActionName-validation.xml, 其中actionName为action类的名称,本例中则为TestPeopleAction-validation.xml。

TestPeopleAction-validation.xml内容如下(附xml文件中正则表达式不起作用的解决方案)<?xml version="1.0" encoding="UTF-8"?><!– 注意DOCTYPE的地址,并不是 –><!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.3//EN" ""><!–校验文件的根元素–><validators><!– 校验action的name属性 –><field name="name"><!– 指定用户名必须满足必填规则 –><field-validator type="requiredstring" <span style="color:#cc0000;">short-circuit="true"</span>><param name="trim">true</param><message>必须输入姓名</message></field-validator><!– 指定name属性必须匹配正则表达式 –><field-validator type="regex" <span style="color:#cc0000;">short-circuit="true"</span>><!–<span style="color:#ff0000;">这里注意下网上大多数人给的demo里这个param里的name参数写的是expression,我调试了好久发现这样写的话这个正则表达式校验不起作用,后把param里面name参数的值改为regex就好了。PS:个人猜测可能是版本的问题,如果读者用我这个例子正则表达式不起作用的话,不妨把param里的name参数再改为expression试试(写法如下):<param name="expression" ><![CDATA[(\w{4,25})]]></param></span>–><param name="regex" ><![CDATA[(\w{4,25})]]></param><message>姓名要在4-25位之间</message></field-validator></field><!– 校验action的password属性 –><field name="password"><!– 指定用户名必须满足必填规则 –><field-validator type="requiredstring" <span style="color:#cc0000;">short-circuit="true"</span>><param name="trim">true</param><message>必须输入密码</message></field-validator><!– 指定name属性必须匹配正则表达式 –><field-validator type="regex" <span style="color:#cc0000;">short-circuit="true"</span>><param name="regex"><![CDATA[(\w{4,25})]]></param><message>您输入的密码只能是字母和数字,且长度必须在4到25之间</message></field-validator></field><!– 指定age属性必须在指定范围内 –><field name="age"><field-validator type="requiredstring" <span style="color:#cc0000;">short-circuit="true"</span>><param name="trim">true</param><message>必须输入年龄</message></field-validator><field-validator type="int" <span style="color:#cc0000;">short-circuit="true"</span>><param name="min">1</param><param name="max">150</param><message>输入年龄必须在1到150之间</message></field-validator></field><!– 指定birth必须在指定范围内 –><field name="birth"><!– 指定用户名必须满足必填规则 –><field-validator type="requiredstring" <span style="color:#cc0000;">short-circuit="true"</span>><param name="trim">true</param><message>必须输入生日</message></field-validator><field-validator type="date" <span style="color:#cc0000;">short-circuit="true"</span>><!– 下面指定日期字符串时,必须使用本Locale的日期格式 –><param name="min">1900-01-01</param><param name="max">2015-05-01</param><message>生日必须在${min}到${max}之间</message></field-validator></field></validators>PS:上述的标红的short-circuit="true"部分是为了实现短路校验的作用。

看看花儿冲破北疆漫漫寒冬,妖娆绽放;

validate.xml文件中正则表达式不起作用的解决方案)

相关文章:

你感兴趣的文章:

标签云: