zoukankan      html  css  js  c++  java
  • JSON.toJSONString(joinPoint.getArgs())报错getOutputStream() has already been called for this response

    nested exception is java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)] with root cause
    
    private void addOperationLog(JoinPoint joinPoint, Object res, int time) {
    MethodSignature signature = (MethodSignature)joinPoint.getSignature();
    MpOpLog operationLog = new MpOpLog();
    operationLog.setRunTime(time);
    operationLog.setReturnVal(JSON.toJSONString(res));
    System.out.println("================:"+joinPoint.toString());
    Object[] args = joinPoint.getArgs();
    Object[] arguments = new Object[args.length];
    System.out.println("================:"+args);
    for (int i = 0; i < args.length; i++) {
    if (args[i] instanceof ServletRequest || args[i] instanceof ServletResponse || args[i] instanceof MultipartFile) {
    //ServletRequest不能序列化,从入参里排除,否则报异常:java.lang.IllegalStateException: It is illegal to call this method if the current request is not in asynchronous mode (i.e. isAsyncStarted() returns false)
    //ServletResponse不能序列化 从入参里排除,否则报异常:java.lang.IllegalStateException: getOutputStream() has already been called for this response
    continue;
    }
    arguments[i] = args[i];
    }
    String paramter = "";
    if (arguments != null) {
    try {
    paramter = JSONObject.toJSONString(arguments);
    } catch (Exception e) {
    paramter = arguments.toString();
    }
    }
    System.out.println("================:"+paramter.toString());
    operationLog.setArgs(paramter.toString());
    operationLog.setOpTime(new Date());
    operationLog.setMethod(signature.getDeclaringTypeName() + "." + signature.getName());
    
    String uerid = AppUtil.getJwtParam("userId");
    String userName = AppUtil.getJwtParam("userName");
    
    operationLog.setUserId(StringUtils.defaultIfBlank(uerid, "anonymous"));
    operationLog.setUserName(StringUtils.defaultIfBlank(userName, "anonymous"));
    
    OpLog annotation = signature.getMethod().getAnnotation(OpLog.class);
    if (annotation != null) {
    operationLog.setId(UUID.randomUUID().toString().replace("-", ""));
    operationLog.setLevel(annotation.level());
    operationLog.setContent(getDetail(((MethodSignature)joinPoint.getSignature()).getParameterNames(),
    arguments, annotation));
    operationLog.setOpType(annotation.operationType().getValue());
    operationLog.setOpUnit(annotation.operationUnit());
    }
    
    tmpOpLogService.insert(operationLog);
    }
  • 相关阅读:
    1877. 数组中最大数对和的最小值 力扣(中等) 简单题,sort+贪心
    1838. 最高频元素的频数 力扣(中等) 尺取法 是我做不出来的题
    面试题 08.09. 括号 力扣(中等) 是我想不出来的回溯
    js删除数组里的某个元素
    Yiwen with Sqc 题解(dp)
    Link with EQ 题解(dp)
    Robots 题解(暴力bitset)
    P3232 [HNOI2013]游走 题解(图上随机游走问题 高斯消元
    怀旧游戏 题解(逆向bfs打表博弈)
    F. The Number of Subpermutations 题解(异或hash维护全排列)
  • 原文地址:https://www.cnblogs.com/hikoukay/p/11305282.html
Copyright © 2011-2022 走看看