@Ablechen
2019-07-24T04:26:20.000000Z
字数 2832
阅读 363
对于Common-FileUpload框架的进一步封装,使用到了FileUpload拦截器
三个参数:maximumSize, allowedTypes, allowedExtendsions
使用file标签的时候,自动得到uploadFileName, uploadFile, uploadFileContentType三个属性,通过在action设置这三个属性的getter和setter方法完成自动注入
<struts>
<constant name="struts.custom.i18n.resources" value="messageResource_zh_CN"></constant>
<package name="struts2" namespace="/" extends="struts-default">
<action name="fileAction" class="action.FileAction">
<!-- 指定上传文件的类型,定义局部变量拦截器, 修改默认拦截器的属性
"fileUpload.maximumSize": 上传最大文件的大小
"fileUpload.allowedTypes": 上传文件的类型
"fileUpload.allowedExtendsions": 上传文件的可扩展类型
-->
<interceptor-ref name="defaultStack">
<param name="fileUpload.maximumSize">500000000</param>
<param name="fileUpload.allowedTypes">text/plain, application/vnd.ms-powerpoint</param>
<param name="fileUpload.allowedExtendsions">.txt, .ppt</param>
</interceptor-ref>
<result>success.jsp</result>
<!-- 出现错误自动放回input结果, 进入错误页面 -->
<result name="input">error.jsp</result>
</action>
</package>
</struts>
在interceptor-ref标签中指定使用的拦截器栈,param标签设定需要的关于文件操作的三个参数
使用的方法为Action中的validate方法
当struts2框架得到一个请求的时候会自动执行validate方法,进行数据验证,而错误的信息一般都是通过
addFieldError("form字段名", "错误信息")
值得注意的是,要进行自动注入一定要有相应的getter方法和setter方法,否则不能完成自动注入
public class DataAction extends ActionSupport{
private String name;
private String age ;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
// @Override
// public void validate() {
// if(name==null|| name.trim().equals("")) {
// addFieldError("name", "姓名不能为空");
// }
// if(age==null||age.trim().equals("")) {
// addFieldError("age", "年龄不能能为空");
// }else if(Integer.parseInt(age)>50) {
// addFieldError("age", "年龄必须在50以内");
// }
// }
}
当输入的数据产生异常的时候,action返回的字符串为"input"