gpt4 book ai didi

java - 修改请求参数的注解

转载 作者:行者123 更新时间:2023-11-30 07:11:31 30 4
gpt4 key购买 nike

如何在进入 Controller 之前修改请求参数(@RequestParam String bar)?

理想情况下,我想创建一个注释:

@RequestMapping(method = GET, path = "foo")
public ResponseEntity<String> getBar(@RequestParam @Sanitize("bar") String bar) {

// bar is sanitized

/** method body *//
}

根据to this question ,我尝试创建接口(interface)Sanitize:

@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Sanitize {
String value();
}

还有一个解析器SanitizeResolver

public class SanitizeResolver implements HandlerMethodArgumentResolver {

@Override
public boolean supportsParameter(MethodParameter parameter) {
return parameter.getParameterAnnotation(Sanitize.class) != null;
}

@Override
public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer mavContainer,
NativeWebRequest webRequest, WebDataBinderFactory binderFactory) throws Exception {
Sanitize attr = parameter.getParameterAnnotation(Sanitize.class);
return MyUtils.sanitize(webRequest.getParameter(attr.value()));
}
}

并将解析器添加到我的 WebMvcConfigurerAdapter 的解析器中:

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {
argumentResolvers.add(new SanitizeResolver());
}

解析器已添加良好,但从未被调用。

我正在使用Spring 4.2.6.RELEASE 。我是否错过了什么,如果无法工作,是否有更好的解决方案?

最佳答案

解决方案是删除@RequestParam,谢谢 Sotirios Delimanolis!

关于java - 修改请求参数的注解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39168793/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com