文档章节

struts2 用iframe 做个无刷新上传文件例子(二)

james_you
 james_you
发布于 2014/04/26 11:15
字数 387
阅读 111
收藏 0

补上自定义的错误拦截器代码和国际化资源代码

package com.hello.web;
/**
 * 自定义拦截器例子
 * 拦截器是单例的
 * */
import java.util.Map;

import org.apache.struts2.dispatcher.ServletDispatcherResult;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.Result;
import com.opensymphony.xwork2.interceptor.AbstractInterceptor;

public class ErrorInterceptor extends AbstractInterceptor {
    private static final long serialVersionUID = -7370956658036991526L;
    private Logger logger = LoggerFactory.getLogger(ErrorInterceptor.class);
    @Override
    public String intercept(ActionInvocation invocation) throws Exception {
        // TODO Auto-generated method stub
        try
        {
            logger.debug("begin-------------------------------");  
            logger.debug("ErrorInterceptor实例:"+this.toString());
            //找到运行的Action对象,并打印其类名  
            //logger.debug("Action:"+invocation.getAction().getClass().getName());  
            logger.debug("Action:"+invocation.getAction().getClass());  
            //找到运行的ActionProxy对象,并打印其要运行的方法名  
            logger.debug("Method:"+invocation.getProxy().getMethod());  
            //找到这次请求的request中的parameter参数,并打印  
            Map<String, Object> params = invocation.getInvocationContext().getParameters();  
            for (String key:params.keySet()){  
                Object obj = params.get(key);  
                if(obj instanceof String[]){  
                    String[] arr = (String[]) obj;  
                    logger.debug("Param:"+key);  
                    for (String value:arr){  
                        logger.debug(value);  
                    }  
                }  
            }  
            //运行后续的拦截器、Action和Result  
            String resultCode = invocation.invoke();  
            logger.debug("resultCode:"+resultCode);
            //在Action和Result运行之后,得到Result对象  
            //并且可以强制转换成ServletDispatcherResult,打印其下一个JSP的位置  
            Result rresult = invocation.getResult();  
            if (rresult instanceof ServletDispatcherResult){  
                ServletDispatcherResult result = (ServletDispatcherResult) rresult;  
                logger.debug("JSP:"+result.getLastFinalLocation());  
            }  
            logger.debug("end-------------------------------");           
            return resultCode;   

        }catch(Exception e){
            logger.error("拦截器异常:",e);
            return "500";
        }
    }

}

国际化文件

userIdNotNull=\u7528\u6237\u540D\u4E0D\u80FD\u4E3A\u7A7A\uFF01
passwordlengthErrMsg=\u5BC6\u7801\u957F\u5EA6\u9700\u5927\u4E8E6\u4F4D\uFF01
passwordNotNull=\u5BC6\u7801\u4E0D\u80FD\u4E3A\u7A7A\uFF01
#file upload
struts.messages.error.content.type.not.allowed=\u4E0A\u4F20\u6587\u4EF6\u53EA\u80FD\u4E3AJPG,PNG,GIF,TXT\u7C7B\u578B\uFF01
struts.messages.error.file.too.large=\u6700\u591A\u53EA\u80FD\u4E0A\u4F201M\u5927\u5C0F\u7684\u6587\u4EF6\uFF01
struts.messages.upload.error.SizeLimitExceededException=\u6700\u5927\u53EA\u5141\u8BB8\u4E0A\u4F20\: {0} Byte \u5F53\u524D\u6587\u4EF6\u5927\u5C0F\: {1} Byte\!

完整的例子,后续打个包传上来

© 著作权归作者所有

james_you
粉丝 5
博文 25
码字总数 12119
作品 0
长宁
技术主管
私信 提问
struts2 用iframe 做个无刷新上传文件例子(一)

用Iframe来实现无刷新文件上传的注意点 1. 页面需要放一个iframe,并隐藏,然后让上传页面表单的target指定到这个iframe 2. struts2里面,中文文件编码处理,可以在配置文件,也可以在actio...

james_you
2014/04/26
1K
0
javascript实现图片伪异步上传

实现逻辑 首先要知道, ajax无法发送带有文件的post请求所以,所以还是要用同步的方式,但是刷新的时候,我们不要在原来的页面刷新,去一个隐藏的iframe里面刷新,form表单中action正常填写处...

rand
2018/08/27
0
0
struts2 上传文件添加进度条

为了给用户更好体验,最进在struts2添加了上传进度条让用户知道上传过程时间,增加有好度。 由于以前做个 文件上传 没有用过 组件进行解析,直接用servlet 解析的,而现在 struts2 框架使用 ...

hlevel
2013/08/14
7.6K
6
使用struts2在页面局部位置上传文件,不影响其他文本框数据

这个问题主要源于实验室项目的开发需求的变化。之前的需求只是简单的进行一系列数据的输入和选择,然后提交数据,所以之前一直使用jQuery的ajax的方式进行数据提交,在url中直接传递过去拼接...

yeyuhuayue
2013/10/07
677
0
Struts2 文件上传 对XHR的请求 (ajax + formData 上传的文件) 拿不到文件

Struts2 对文件上传是通过 file upload 拦截器实现的,具体引入方法见这里。然而 File Upload 拦截器似乎对于 XHR 过来的文件上传请求无法响应。 MMP老子试了半天。 用ajax + formData 的方式...

小黄狗
2018/10/01
324
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部