struts2是根据mvc模式设计出来的web层框架,主要处理的是接收和返回数据,而逻辑层和数据访问就不是这个框架的职责范围了。这个框架在mvc模式当中就是一个servlet,用来处理和转发。web.xml用来配置web容器,struts.xml用来配置struts框架
数据校验 当校验成功的时候执行execute方法返回success,如果校验不成功返回input值去配置文件当中去找转发的页面
当数据类型转换错误的时候(也就是不能转换的时候)struts2框架将数据定义为java数据的初始值,框架生成一条错误信息,并将错误信息放到addfielderror中去
如果要替换struts2框架的默认错误信息去struts.xml文件当中配置,在替换的错误信息里应该有
#在这里面name是你要替换的框架当中的值,value是要替换的值
xword.default.invalid.fieldvalue={0} error 这里{0}是当数据错误的时候赋的值 后面的字符串是要添加到addfielderror当中的值
错误信息的替换也有全局的和局部的
全局的配置文件要在classes目录下局部的配置文件要在Action相同目录下全局的配置文件名为定义的properties
局部的配置文件要和Action的名称相同
在配置文件但中每个action属性都可以设置这个表单处理的方法,用method属性里面是方法的名字。这种做法是为了能让一个Action类能有多个处理逻辑
struts2的验证框架是基于xml的验证方式,在和action类相同的目录下面建立 "action类名"+"-validation.xml" 然后在里面添加dtd文件这个文件可以去struts2的例子当中去复制
然后写配置文件 如下:
<validators >//这个是根目录
<field name="username">//这个是需要验证的输入框名字就是输入框的名字
<field-validator type="requiredstring">//选择验证类型 这个类型的列表在xwork.jar 的 com.opensymphony.xwork2.validator.validators 包下的default.xml
文件里
<param name="trim">true</param>//这个是为绑定的验证类的里的属性进行配置
<message>username should not be blank;</message>//当验证不通过时的信息输出
</field-validator>
</field>
<field name="username">
<field-validator type="stringlength">
<param name="minLength">6</param>
<param name="maxLength">10</param>
<message> username should between in ${minLength} and ${maxLength}</message>
</field-validator>
</field>
</validators>
在一个action类当中可以能有多个返回的方法(一个action类可以实现多个逻辑),可以再struts.xml文件当中设置使用哪个执行的方法,是在action标签当中的method的属性设置,但是使用不同的方法需要不同的
验证方式,可以设置不同的验证配置文件来为不同的方法设置验证方法,验证配置文件的文件名应该这样写:actionName-methodName-validation.xml
这是设置每个方法的校验方式,但是这个为这个action类配置的校验配置也会去校验,而且首先校验的是这个action类的校验文件(建议的是如果一个action类有多个逻辑,只提供每个逻辑的验证而不提供action类的
全局验证)
特殊情况:如果一个action类有一个方法的验证,并且有一个全局的验证,这个action有一个子类这个子类也有一个方法 的验证和全局的验证,系统验证的顺序是
首先执行父类的全局验证然后是方法的验证之后是子类的全局验证最后才是子类的方法的 验证
除了field校验方式(字段检验,为每个字段配置校验对象)还有一种是非字段校验 validtor 就是在<validators >这个标签里定义一个validtor标签,定义校验的对象然后为这个对象设置需要校验的字段
validtor标签的使用:标签下第一个子标签是<param name="fieldName">需要校验的字段的名</param>然后还必须有一个<message>标签标示出错后提示的内容
客户端校验:
struts2 给我们提供了一定的客户端校验功能但是功能很不完善所以最好自己去写js校验的代码;
但是在使用struts2提供的校验方式的时候theme属性一定不要设置为simple,而且validata的要设置为true;
也可以自己写js校验,form的一些属性和html里是一样的
转载于:https://www.cnblogs.com/SXLBlog/archive/2009/12/13/1622964.html