首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 其他教程 > 其他相关 >

struts2附件下传,大小超过最大值处理

2012-09-13 
struts2附件上传,大小超过最大值处理 /*** 当上传文件大小大于struts.multipart.maxSize提示时,* 客户端会

struts2附件上传,大小超过最大值处理
 struts2附件下传,大小超过最大值处理struts2附件下传,大小超过最大值处理

    /** * 当上传文件大小大于struts.multipart.maxSize提示时, * 客户端会出现如下错误: * "the request was rejected because its size (4501994) * exceeds the configured maximum (2097152)"。 * 此信息在commons-fileupload.jar, * org.apache.commons.fileupload.FileUploadBase源代码中第904行。 * * 重写addActionError()以替换默认信息。 */ @Override public void addActionError(String anErrorMessage) { //这里要先判断一下,是我们要替换的错误,才处理 if (anErrorMessage.startsWith("the request was rejected because its size")) { //这些只是将原信息中的文件大小提取出来。 Matcher m = Pattern.compile("\\d+").matcher(anErrorMessage); String s1 = ""; if (m.find()) s1 = m.group(); String s2 = ""; if (m.find()) s2 = m.group(); //偷梁换柱,将信息替换掉 // super.addActionError("你上传的文件(" + s1 + ")超过允许的大小(" + s2 + ")"); super.addActionError("您上传的附件过大,请确保单次所上传的附件大小总和没有超过20兆!"); isExceedMaximum=true; } else {//不是则不管它 super.addActionError(anErrorMessage); } }

     

    jsp:

     

     struts2附件下传,大小超过最大值处理struts2附件下传,大小超过最大值处理
      <%@page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %><%@taglib uri="/struts-tags" prefix="s"%><html> <body> <!--fielderror--> <s:if test="hasFieldErrors()"> <s:iterator value="fieldErrors"> <s:iterator value="value" status="statu"> <!-- //field的错误消息是List 因此还需要迭代一次 --> <s:set name="index" value="#statu.index"/> <s:set name="msg" value="#msg+value.get(#request.index).toString()==null||#msg+value.get(#request.index).toString()=='null'?'':#msg+value.get(#request.index).toString()+'\\\n'"/><!-- 关键代码 不过开始时有null前缀未去掉 -- > </s:iterator> </s:iterator> </s:if> <!--actionerror --> <s:if test="hasActionErrors()"> <s:iterator value="actionErrors"> <script language="JavaScript"> alert("<s:property escape="false"/>") </script> </s:iterator> </s:if> <!-- actionmessage --> <s:if test="hasActionMessages()"> <s:iterator value="actionMessages"> <script> alert("<s:property escape="false"/>") </script> </s:iterator> </s:if> <!-- 打印转换好格式的fielderror信息 --> <s:if test="#msg.length()>0"> <script language="JavaScript"> // alert('<s:property escape="false" value="#msg"/>') alert("可能资金格式不是数字,请确认!"); </script> </s:if> <script language="JavaScript"> history.back(); </script> </body> </html>

       

      struts2.xml actionl配置:

       

      如果action中默认的拦截器栈包含fileupload拦截器,就不要另外配置。如myStack,defaultStack。否则addActionError()会多执行一次,页面“您上传的附件过大,请确保单次所上传的附件大小总和没有超过20兆!"的提示会alert2次;

       

      全局大小配置:

      struts.xml

       

      <constant name= "struts.multipart.maxSize" value="20971520" />

热点排行