struts2文件上传类型和大小提示信息问题

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>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值