1、success/result.jsp/action/package/strutsStruts2的标签库 % taglib prefix=s uri=/struts-tags %ActionSupport的if(hello.equals(this.getUsername().trim()&.equals(this.getPassword().trim()尽量把常量写在前面,可以防止出现异常验证this.addFieldError(username(要验证的字段), reuqeried);Struts2的类型转换继承DefaultTypeConverter类(针对实体类)public class
2、PointConverter extends DefaultTypeConverter public Object convertValue(Map context, Object value, Class toType) if(Point.class=toType) Point point=new Point(); String str=(String)value; String paramValues=str0.split(, int x=Integer.parseInt(paramValues0); int y=Integer.parseInt(paramValues1); point.
3、setX(x); point.setY(y); return point; if(String.class=toType) Point point=(Point)value; int x=point.getX(); int y=point.getY(); String result=x=+x+y=+y; return result; return null; point-conversion.properties(配置)point=com.test.action.PointConverter;Point2=com.test.action.PointConverter;Point:指的是acti
4、on中的属性,也就是jsp页面中的变量com.test.action.PointConverter转换器类全局类型转换xwork-conversion.properties;com.test.action.point=com.test.action.PointConverter;Com.test.action.point表示要转换的类com.test.action.PointConverter表示转换器StrutsTypeConverter的类型转换相应的properties做相应的修改com.test.action.point=com.test.action.PointConverter2;
5、public class PointConverter2 extends StrutsTypeConverter public Object convertFromString(Map context, String values, Class toClass) Point point = new Point(); String paramValues = values0.split( int x = Integer.parseInt(paramValues0); int y = Integer.parseInt(paramValues1); point.setX(x); point.setY
6、(y); return point; public String convertToString(Map context, Object o) Point point = (Point) o; int x = point.getX(); int y = point.getY(); String result = + x + + y; return result;集合类型的转换(注意properties也要修改)这里要注意泛型 List list=new ArrayList(); for(String value:values) String paramValues=value.split( l
7、ist.add(point); return list; list=(List)o; StringBuilder sb=new StringBuilder();/非同步效率高 for(Point point:list) sb.append().append(x).append(,y=).append(y); return sb.toString();Struts2验证1.在action中实现validate()方法进行验证public void validate() if(null=username|username.length()10) this.addFieldError(, 出错提示信
8、息遇到类型转换错误的时候(也就是说不能进行类型转换),struts2框架自动生成一条错误信息,并且将该错误信息放到addFieldError里面constant name=struts.custom.i18n.resources value=message/constant替换struts标签的默认验证在message.properties(全局)中设置xwork.default.invalid.fieldvalue=0error来替换默认的struts标签的验证要验证哪个action就要把其对应的资源文件放在对应的目录中那个比如验证registerAction对应registerAction
9、.propertiesinvalid.fieldvalue.age=age error(资源文件中的内容)addActionError的用法if(null=username|username.length()(默认只显示fieldError)如果把Action中要有add方法,默认执行execute方法那么对应于add方法的验证就是validateAdd()方法验证execute一样是validateExecute()Struts2的验证框架为每个需要验证的action创建对应的action-validation.xml有多少了这样的action就要建立多少了这样的validation.xml
10、文件头dtdDOCTYPE validators PUBLIC -/OpenSymphony Group/XWork Validator 1.0.2/ENField校验(字段校验),出错信息放在fieldError级别中,如果页面用将不会显示错误信息field name=field-validator type=requiredstringparam name=trimtruemessageusername should not be blank!/message/field-validator stringlengthminLength6maxLength10username should
11、be between $minLength and $maxLengthpasswordpassword should not be blank!password should be between $minLength and $maxLength repasswordrepassword should not be blank!repasswordshould be between $minLength and $maxLengthagerequiredage should not be blank!intmin1max150age should be between $min and $
12、maxbirthdaybirthday should not be blank!date2001-01-012003-12-31birthday should be between $min and $maxgraduationgraduation should not be blank!2005-01-012007-12-31graduation should be between $min and $max非字段校验validator type=fieldNameusernameStruts2的客户端验证1.form的theme不能设置为simple2.Form的validate属性的值是
13、true(只做了解,最好不要使用)为了解决action中多方法的校验要提供这样的action-method-validation.xml文件那么全局校验action-validation.xml是否提供自己注意,根据实际情况来定。真正存放field级别错误信息的对象是LinkedHashMap2. 该LinkedHashMap的key是String类型的,value是ArrayList类型的3. 对于Action级别的错误信息,实际上是放置在ArrayList中的设置断点debug调试Validation.xml先执行,validate()方法后执行Struts2的拦截器(intercepte
14、r)拦截器的配置如果action引用了自定义拦截器的话,默认的拦截器将不会执行,要执行默认的拦截器就必须也引入默认拦截器logininterceptor-ref name=interceptor/interceptor-refdefaultStackinterceptorsinterceptor name=com.intercepptor/interceptor/interceptors给拦截器赋值aaaaa method= bbb自定义拦截器要实现Interceptor接口或者AbstractInterceptor抽象类方法拦截器MethodFilterInterceptor自定义一个拦截器
15、继承MethodFilterInterceptor实现方法doIntercept();myInterceptMethodincludeMethodsadd,execute包含要拦截的方法excludeMethodsadd不包含拦截的方法拦截器实现权限验证Map map = invocation.getInvocationContext().getSession(); if (map.get(user) = null) return Action.LOGIN;return invocation.invoke();创建sessionMap map = ActionContext.getContex
16、t().getSession();map.put(aaareturn SUCCESS;script type=text/javascript function add() var td=document.getElementById(more var br=document.createElement(br var input=document.createElement(input var button=document.createElement( input.type=file; input.name= button.type=button button.value=Remove td.appendChild(br); td.appendChild(input); td.appendChild(button); button.onclick=function() td.removeChild(br); td.removeChild(input); td.removeChild(button);/scri
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2