[关闭]
@Ablechen 2019-07-24T04:26:20.000000Z 字数 2832 阅读 363

使用struts2框架完成文件上传和数据验证


文件上传

对于Common-FileUpload框架的进一步封装,使用到了FileUpload拦截器
三个参数:maximumSize, allowedTypes, allowedExtendsions

multipart/form-dataform:标签action自动注入FileUtils.copyFile

使用file标签的时候,自动得到uploadFileName, uploadFile, uploadFileContentType三个属性,通过在action设置这三个属性的getter和setter方法完成自动注入

  1. <struts>
  2. <constant name="struts.custom.i18n.resources" value="messageResource_zh_CN"></constant>
  3. <package name="struts2" namespace="/" extends="struts-default">
  4. <action name="fileAction" class="action.FileAction">
  5. <!-- 指定上传文件的类型,定义局部变量拦截器, 修改默认拦截器的属性
  6. "fileUpload.maximumSize": 上传最大文件的大小
  7. "fileUpload.allowedTypes": 上传文件的类型
  8. "fileUpload.allowedExtendsions": 上传文件的可扩展类型
  9. -->
  10. <interceptor-ref name="defaultStack">
  11. <param name="fileUpload.maximumSize">500000000</param>
  12. <param name="fileUpload.allowedTypes">text/plain, application/vnd.ms-powerpoint</param>
  13. <param name="fileUpload.allowedExtendsions">.txt, .ppt</param>
  14. </interceptor-ref>
  15. <result>success.jsp</result>
  16. <!-- 出现错误自动放回input结果, 进入错误页面 -->
  17. <result name="input">error.jsp</result>
  18. </action>
  19. </package>
  20. </struts>

在interceptor-ref标签中指定使用的拦截器栈,param标签设定需要的关于文件操作的三个参数

数据验证

使用的方法为Action中的validate方法
当struts2框架得到一个请求的时候会自动执行validate方法,进行数据验证,而错误的信息一般都是通过

  1. addFieldError("form字段名", "错误信息")

值得注意的是,要进行自动注入一定要有相应的getter方法和setter方法,否则不能完成自动注入

  1. public class DataAction extends ActionSupport{
  2. private String name;
  3. private String age ;
  4. public String getName() {
  5. return name;
  6. }
  7. public void setName(String name) {
  8. this.name = name;
  9. }
  10. public String getAge() {
  11. return age;
  12. }
  13. public void setAge(String age) {
  14. this.age = age;
  15. }
  16. // @Override
  17. // public void validate() {
  18. // if(name==null|| name.trim().equals("")) {
  19. // addFieldError("name", "姓名不能为空");
  20. // }
  21. // if(age==null||age.trim().equals("")) {
  22. // addFieldError("age", "年龄不能能为空");
  23. // }else if(Integer.parseInt(age)>50) {
  24. // addFieldError("age", "年龄必须在50以内");
  25. // }
  26. // }
  27. }

当输入的数据产生异常的时候,action返回的字符串为"input"

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注