LongStaying 2019-07-17 15:50 采纳率: 83.3%
浏览 2482
已采纳

参数上使用自定义注解在aop中无法获取到该参数

目标方法:

    @ApiOperation(value="testRedis")
    @RequestMapping(value = "/testRedis", method = RequestMethod.GET)
    @DropDownSearch(key =  "'bdt0010_'+#projectId")
    public Object redisTest(String projectId, @SearchKeyWord  String value){
        System.out.printf("");
        return BaseResult.successResultCreate("test",bdt0010Service.redisTest(projectId));
    }

其中@DropDownSearch为自定义方法注解
@SearchKeyWord为自定义参数注解

在Aspect使用环绕通知:

public Object doAfterClearRedisCache(ProceedingJoinPoint joinPoint) throws Throwable {
        //Class<?> targetClass = joinPoint.getTarget().getClass();
        //获得参数列表
        Object[] args = joinPoint.getArgs();
                }

getArgs方法无法获取被@SearchKeyWord标记的参数对象。
此前未使用@SearchKeyWord注解时一切均正常。
请问是什么问题?

  • 写回答

2条回答 默认 最新

  • LongStaying 2019-07-22 16:50
    关注

    实际问题在于swaggerui标注的方法中,当方法参数被自定义注解标记后,该参数被认为是body类型,在使用swagger测试时无法正确将参数值传递到后台。
    只需为参数再加上

    @RequestParam(required = false)
    

    即可

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵