例如上传的文件大小不能超过1M
需要自定义验证
大概原理是
java.lang.Object 是自定义validateXXXX()方法的第一个参数
该参数实际就是表单Bean的对象
1.强制类型转换
DynaValidatorForm form=(DynaValidatorForm)obj;
2. 获取上传对象FormFile
FormFile file=form.get("表单Bean属性名");
3.获取并比较文件大小
int size=file.getFileSize();
返回的是字节类型
/*********************源代码********************/
public static boolean validateFileSize(Object bean, ValidatorAction va,
org.apache.commons.validator.Field field,
org.apache.struts.action.ActionMessages errors,
org.apache.commons.validator.Validator validator,
javax.servlet.http.HttpServletRequest request) {
//field对象对应了validation.xml中的<field>元素
int size = Integer.parseInt(field.getVarValue("filesize")); //获取表示文件大小的参数值
//强制类型转换
DynaValidatorForm form = (DynaValidatorForm) bean;
//得到FormFile对象
FormFile file = (FormFile) form.get("shujifengpi");
// System.out.println(file.getFileSize() + "------------");
//比较
if (file.getFileSize() > size * 1024 * 1024) {
errors.add(field.getKey(), Resources.getActionMessage(request, va,
field));
}
return errors.isEmpty();
}