stuts2表单验证时,validation.xml的一些配置,需要注意以下几个方面:
一.关于验证的一些配置信息
1.validation.xml的文件名称一定要以Action名称开头,如:现在有个登录的LoginAction,那么在建验证xml文件时,validation.xml的名称为“LoginAction-validation.xml”。
2.验证的xml文件要和相应的action类放在同一文件夹下。
3.validation.xml文件中的<field-validator type="">标签的type属性,必须与VO中定义的属性的数据类型相同。
4.在struts.xml文件中的<action>标签中,必须包含<result name="input">和<result name="success" >,否则会报找不到页(404)。<?xml version="1.0" encoding="UTF-8" ?>
5.validation.xml文件的一些配置信息
<!DOCTYPE validators PUBLIC "-//OpenSymphony Group//XWork Validator 1.0.2//EN" "http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd"> <validators> <field name="username"> <!-- 验证字符串不能为空 --> <field-validator type="requiredstring"> <!-- 去空格 --> <param name="trim">true</param> <!-- 错误提示信息 --> <message>用户名不能为空</message> </field-validator> <!-- 验证字符串长度 --> <field-validator type="stringlength"> <param name="minLength">2</param> <param name="maxLength">20</param> <message>用户名长度应在2到18个字符间</message> </field-validator> </field> <field name="password"> <field-validator type="requiredstring"> <param name="trim">true</param> <message>密码不能为空</message> </field-validator> <field-validator type="stringlength"> <param name="minLength">6</param> <param name="maxLength">18</param> <message>密码长度应在6到18个字符之间</message> </field-validator> </field> <!--<field name="age"> <field-validator type="int"> <param name="min">1</param> <param name="max">150</param> <message>年龄应在1到150之间</message> </field-validator> </field> 验证字符串为日期类型 <field name="birthday"> <field-validator type="date"> <param name="min">1900-01-01</param> <param name="max">2008-10-16</param> <message>出生日期应在1900-01-01到2008-10-16</message> </field-validator> </field> --></validators>
二.关于页面显示的样式
为了能让验证错误时的提示信息显示在每个字段后面,需做以下修改:
1.找到你的struts2-core-2.2.XXX.jar文件,用解压工具打开,找到“template”---->simple文件夹下"fielderror.ftl",将其解压到出来。
2.和struts2的jar包目录一样,在你的项目src目录下,新建一个template文件夹,然后在template下新建simple文件夹,并将“fielderror.ftl”文件放在这个目录下。如下图所示:
3. 修改fielderror.ftl配置文件,这一步才是关键,如何修改,就是把<ul></ul><li></li>标签删除(仅仅是删除标签而不删除标签里面的内容),简便的方法就是用记事本打开这个文件并用空格替换上面的每个标签。
显示效果如下:
下面是“fielderror.ftl”修改后的代码:
<#-- /* * $Id: Action.java 502296 2007-02-01 17:33:39Z niallp $ * * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you under the Apache License, Version 2.0 (the * "License"); you may not use this file except in compliance * with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, * software distributed under the License is distributed on an * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the * specific language governing permissions and limitations * under the License. */ --> <#if fieldErrors?exists><#t/> <#assign eKeys = fieldErrors.keySet()><#t/> <#assign eKeysSize = eKeys.size()><#t/> <#assign doneStartUlTag=false><#t/> <#assign doneEndUlTag=false><#t/> <#assign haveMatchedErrorField=false><#t/> <#if (fieldErrorFieldNames?size > 0) ><#t/> <#list fieldErrorFieldNames as fieldErrorFieldName><#t/> <#list eKeys as eKey><#t/> <#if (eKey = fieldErrorFieldName)><#t/> <#assign haveMatchedErrorField=true><#t/> <#assign eValue = fieldErrors[fieldErrorFieldName]><#t/> <#if (haveMatchedErrorField && (!doneStartUlTag))><#t/> <#assign doneStartUlTag=true><#t/> </#if><#t/> <#list eValue as eEachValue><#t/> <span<#rt/> <#if parameters.cssClass?exists> class="${parameters.cssClass?html}"<#rt/> <#else> class="errorMessage"<#rt/> </#if> <#if parameters.cssStyle?exists> style="${parameters.cssStyle?html}"<#rt/> </#if> >${eEachValue}</span> </#list><#t/> </#if><#t/> </#list><#t/> </#list><#t/> <#if (haveMatchedErrorField && (!doneEndUlTag))><#t/> <#assign doneEndUlTag=true><#t/> </#if><#t/> <#else><#t/> <#if (eKeysSize > 0)><#t/> <#list eKeys as eKey><#t/> <#assign eValue = fieldErrors[eKey]><#t/> <#list eValue as eEachValue><#t/> <span<#rt/> <#if parameters.cssClass?exists> class="${parameters.cssClass?html}"<#rt/> <#else> class="errorMessage"<#rt/> </#if> <#if parameters.cssStyle?exists> style="${parameters.cssStyle?html}"<#rt/> </#if> >${eEachValue}</span> </#list><#t/> </#list><#t/> </#if><#t/> </#if><#t/> </#if><#t/>