struts2文件上传类型和大小提示信息问题
2012-11-08 21:36
393 查看
struts2文件上传问题。
之前的博客中针对struts2上传做了介绍,其中就strut2文件上传类型和大小限制做了介绍,基本满足了文件上传的功能。但是上传文件类型不对或者文件超出了大小限制,服务器就会直接报出异常信息,有时会在页面直接打出,有时仅后台报错,而前台没有反应。当然了这都是不是我们想要的,尤其是在前台页面打印出异常信息,这是不能让人容忍的。当然struts也给我们提供了解决的办法,在struts2的核心包中default.properties配置文件中有一项配置
# struts.custom.i18n.resources=testmessages,testmessages2,默认情况下时禁用的,我们可以再struts.xml的配置文件中来启用它,具体做法加入如下语句:
<constant name="struts.custom.i18n.resources" value="resource"></constant>
其中resource为相对应的配置文件,我们要新建一个resource.properties文件,里面加入
struts.messages.error.file.too.large=File too Large 这个是文件过大的提示信息
struts.messages.error.content.type.not.allowed=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B\u4E0D\u6B63\u786E这个是文件类型不正确的提示信息这里由于我使用myeclipse添加的,结果中文加入后变成了上面的字符,不过没有关系页面能够正常显示。
做完这些显示是不够的我们要再页面给他一个提示信息显示的地方
jsp页面代码:<s:fielderror name="file"></s:fielderror>
那么到此为止是不是就可以打印提示信息而不是异常信息了呢?答案是否定的,由于出现这种异常时请求还没有到达我们所请求的action就已经返回页面了,那么我们必须在action中给他定义一个result指定其返回的页面,那么这result的name是什么呢,经过我不断的错误调试之后发现这个name为input。我们在action中进行如下配置:
<result name="input">_upload_error.jsp</result>
其中_upload_error.jsp为你自定义的错误信息显示页面。
走到这一步你还不要高兴的太早,这或许只能提示类型不正确的信息,而针对文件过大的情况并不能给出提示,本人根据网上提供的各种方法进行测试,结果发现都是扯淡,按照他们的方法都不能在页面给出提示信息,,最后自己弄了一种本方法进行提示,该方法能在前台页面给出提示信息,但是后台仍然会报出异常信息,具体方法是:
在你的action类中重写addActionError方法,这个方法是ActionSupport中的,所以你的action类要直接或者间接地继承ActionSupport类。
@Override
public void addActionError(String anErrorMessage){
System.out.println(anErrorMessage);
if (anErrorMessage
.startsWith("the request was rejected because its size")) {
request.setAttribute("info", "对不起,你上传的文件太大,服务器拒绝接受,请上传100M以下的文件!");
super.addActionError(anErrorMessage);
} else {
super.addActionError(anErrorMessage);
}
}
那么页面怎么提示呢,由于类型提示信息和大小提示信息我希望是在同一个页面,所以页面代码如下:
<p>
<s:fielderror name="file">
<%String info=(String)request.getAttribute("info");
if(info!=null&&(!"".equals(info.trim())))
out.println(request.getAttribute("info"));%>
</s:fielderror>
</p>
之前的博客中针对struts2上传做了介绍,其中就strut2文件上传类型和大小限制做了介绍,基本满足了文件上传的功能。但是上传文件类型不对或者文件超出了大小限制,服务器就会直接报出异常信息,有时会在页面直接打出,有时仅后台报错,而前台没有反应。当然了这都是不是我们想要的,尤其是在前台页面打印出异常信息,这是不能让人容忍的。当然struts也给我们提供了解决的办法,在struts2的核心包中default.properties配置文件中有一项配置
# struts.custom.i18n.resources=testmessages,testmessages2,默认情况下时禁用的,我们可以再struts.xml的配置文件中来启用它,具体做法加入如下语句:
<constant name="struts.custom.i18n.resources" value="resource"></constant>
其中resource为相对应的配置文件,我们要新建一个resource.properties文件,里面加入
struts.messages.error.file.too.large=File too Large 这个是文件过大的提示信息
struts.messages.error.content.type.not.allowed=\u5BF9\u4E0D\u8D77\uFF0C\u60A8\u4E0A\u4F20\u7684\u6587\u4EF6\u7C7B\u578B\u4E0D\u6B63\u786E这个是文件类型不正确的提示信息这里由于我使用myeclipse添加的,结果中文加入后变成了上面的字符,不过没有关系页面能够正常显示。
做完这些显示是不够的我们要再页面给他一个提示信息显示的地方
jsp页面代码:<s:fielderror name="file"></s:fielderror>
那么到此为止是不是就可以打印提示信息而不是异常信息了呢?答案是否定的,由于出现这种异常时请求还没有到达我们所请求的action就已经返回页面了,那么我们必须在action中给他定义一个result指定其返回的页面,那么这result的name是什么呢,经过我不断的错误调试之后发现这个name为input。我们在action中进行如下配置:
<result name="input">_upload_error.jsp</result>
其中_upload_error.jsp为你自定义的错误信息显示页面。
走到这一步你还不要高兴的太早,这或许只能提示类型不正确的信息,而针对文件过大的情况并不能给出提示,本人根据网上提供的各种方法进行测试,结果发现都是扯淡,按照他们的方法都不能在页面给出提示信息,,最后自己弄了一种本方法进行提示,该方法能在前台页面给出提示信息,但是后台仍然会报出异常信息,具体方法是:
在你的action类中重写addActionError方法,这个方法是ActionSupport中的,所以你的action类要直接或者间接地继承ActionSupport类。
@Override
public void addActionError(String anErrorMessage){
System.out.println(anErrorMessage);
if (anErrorMessage
.startsWith("the request was rejected because its size")) {
request.setAttribute("info", "对不起,你上传的文件太大,服务器拒绝接受,请上传100M以下的文件!");
super.addActionError(anErrorMessage);
} else {
super.addActionError(anErrorMessage);
}
}
那么页面怎么提示呢,由于类型提示信息和大小提示信息我希望是在同一个页面,所以页面代码如下:
<p>
<s:fielderror name="file">
<%String info=(String)request.getAttribute("info");
if(info!=null&&(!"".equals(info.trim())))
out.println(request.getAttribute("info"));%>
</s:fielderror>
</p>
相关文章推荐
- 关于struts2使用xml拦截器(interceptor)限制文件上传(fileUpload)大小和类型的问题,道友看一看
- Struts2文件上传 超过大小限制无法跳转至指定input页面问题,浏览器提示连接已重置?根本原因
- struts2上传类型、大小限制以及国际化的问题
- Struts2文件上传的大小限制问题
- Struts2文件上传的大小限制问题
- 解决Struts2文件上传的大小限制问题
- struts2文件上传大小限制问题
- Struts2 当上传的文件大小超过限制大小的时候,为什么没收到任何提示?
- [Struts2]在使用Struts2的文件上传时,文件大小和类型过滤后,页面无法跳转至input页面
- struts2实现文件上传(类型、大小过滤——手动、拦截器)
- Spring MVC文件上传大小和类型限制以及超大文件上传bug问题
- webuploader上传文件,大小,类型,提示、和一些错误
- struts2文件上传大小限制问题
- Struts2 当上传的文件大小超过限制大小的时候,为什么没收到任何提示?
- struts2文件上传大小限制问题解决记录
- Struts2文件上传的大小限制问题
- struts2文件上传大小限制问题
- Mysql Blob类型大小 上传文件大小问题
- struts2上传文件大小受限问题
- struts2文件上传大小限制问题