首页 > 其他分享 >定位接口 MissingServletRequestParameterException: Required String parameter '' is not present

定位接口 MissingServletRequestParameterException: Required String parameter '' is not present

时间:2024-06-21 16:32:21浏览次数:9  
标签:MissingServletRequestParameterException String web Required request org import

@RequestParam与实际传参对不上导致,会抛出异常

 可以定义一个MissingServletRequestParameterException的异常处理,获取、打印出要的接口信息

import cn.hutool.core.util.ObjectUtil;
import com.byd.common.api.vo.Result;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.MissingServletRequestParameterException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import javax.servlet.http.HttpServletRequest;

/**
 * @Author haoxinren
 * @Date 2024/6/21 13:54
 */
@ControllerAdvice
@Slf4j
public class GlobalExceptionHandler {
    @ExceptionHandler(MissingServletRequestParameterException.class)
    @ResponseBody
    public Result<String> handleMissingServletRequestParameterException(MissingServletRequestParameterException ex) {
        String parameterName = ex.getParameterName();
        String parameterType = ex.getParameterType();
        log.error("接口传参异常,参数:{},参数类型:{}", parameterName, parameterType);
        StringBuilder resultMsg = new StringBuilder("error, MissingServletRequestParameterException.");
        RequestAttributes ra = RequestContextHolder.getRequestAttributes();
        ServletRequestAttributes sra = (ServletRequestAttributes) ra;
        if (ObjectUtil.isNotNull(sra)) {
            HttpServletRequest request = sra.getRequest();
            String url = request.getRequestURL().toString();
            String method = request.getMethod();
            String uri = request.getRequestURI();
            String queryString = request.getQueryString();
            log.error("url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString);
            resultMsg.append(" RequestURI: ").append(uri);
        }
        return Result.error(resultMsg.toString());
    }
}

 

标签:MissingServletRequestParameterException,String,web,Required,request,org,import
From: https://www.cnblogs.com/wx23/p/18260809

相关文章

  • String相关内容
    一、String的常用方法1、获取字符串长度Strings="1234test";System.out.println(s.length());====执行结果====82、判断两个字符串是否相同Strings="1234test";System.out.println(s.equals("123"));====执行结果====false3、获取当前字符串的哈希值Str......
  • 浅挖一下String类,解决String常见的面试题
    详解Java中的String类1.String是Java基本数据类型吗?许多同学在学习String类时,会误认为String类是基本数据类型,因为实实在在好像有点像C语言中的字符数组,字符,那不就是基本数据类型吗?可实际上不是的.在Java中String是个表示字符串的一个类,它是由字符组成的不可变......
  • 关于CStringList的剖析
    CStringList是一个双向链表。它的内存管理依赖于CPlex结构。`__declspec(align(8))structCPlex{CPlex*pNext;//BYTEdata[maxNum*elementSize];void*data(){returnthis+1;}staticCPlex*PASCALCreate(CPlex*&head,UINT_PTRnMax,UINT_PTRcbElement); //......
  • qstring::arg方法
    voidTimeMgrUI::SetLinuxTime(QStringsTime){#ifdefg_LinuxPlatformQStringstr=QString("date-s\"%1\"").arg(sTime);system(str.toStdString().data());system("hwclock-w");#endif}在示例代码中用sTime代替%1;原理如下:QStrin......
  • 【java基础】String类的==和equals怎么回事?
    String类是final的,代表不可以被继承了。怎么判断一个类是不是不可变的呢?看里面的成员是不是都用final修饰过了。String里面用byte[]存放字符串的值,而这个value也是final的。就可以认为String是一个不可变的类。Stringobj1=“abc”,那么你再让obj=“bcd”,那么只是让obj指向了一段......
  • 【PL理论】(32) 类型系统:定义类型 τ ∈ TyVar = String | 定义类型环境 τ ∈ TyEnv
    ......
  • switch 语句能否作用在 byte 上;作用在 long 上;作用在 String 上?
    在Java中,switch语句可以作用于多种类型,具体情况如下:可以作用于byte类型:byte类型可以隐式转换为int,因此可以用作switch语句的条件表达式。publicclassSwitchByteExample{publicstaticvoidmain(String[]args){byteb=2;swit......
  • YC302A [ 20240617 CQYC省选模拟赛 T1 ] 构造字符串(string)
    题意你需要构造一个长度为\(n\)的字符串。使得后缀数组为给定的序列\(a\),\(\text{manacher}\)的回文序列为\(b\)。Sol注意到后缀数组实际上是一系列\(\le\)的限制,而\(\text{manacher}\)是一堆相等以及两个不相等的限制。若直接建边很难搞。考虑将限制统一,后缀数组......
  • 关于UEC++中FText、FString与FName
    FText用于本地化和用户界面显示文本。可以方便地将游戏文本翻译成不同的语言。FNameFName在UE中的功能与C#中的字符串池有相似之处,但它们的内部实现和用途有些不同。FName是一种轻量级的、不变的标识符类型,主要用于高效地处理字符串的比较和存储。特点:不可变:一旦创建,FNam......
  • String常用方法【随记】
    在Java中,String类提供了许多常用的方法来操作字符串。以下是一些最常用的方法:length()返回字符串的长度。Stringstr="Hello,World!";intlength=str.length();//13charAt(intindex)返回指定索引处的字符。charch=str.charAt(0);//'H'substring(intbeg......