gpt4 book ai didi

java - @RequestHeader 不绑定(bind)在 POJO 中,但仅绑定(bind)在变量中

转载 作者:行者123 更新时间:2023-11-30 06:15:26 24 4
gpt4 key购买 nike

我无法将请求 header 值绑定(bind)到 POJO 类中。这里有一个解释:

我想将“isKidsProfile”的值绑定(bind)到“DetailCO”,但它没有绑定(bind)。另一方面,如果我仅将其绑定(bind)到变量中,它就可以工作。

//考虑请求中的 header 值为:key:isKidsProfile 和 value:true/false

@RequestMapping(value = "/api/v1/detail/{id}", method = RequestMethod.GET)
public ResponseDTO fetchDetailForKidsProfileUser(
@RequestHeader DetailCO detailCO,
@RequestHeader boolean isKidsProfile) {

sout(detailCO.isKidsProfile); // not bind in object
sout(isKidsProfile); // bind in variable

return new ResponseDTO();
}

详细类CO { 私有(private) boolean isKidsProfile;

//getters ans setters

}

有更多的值,因此最好在 POJO 中绑定(bind),而不是创建多个变量。请提出建议。

最佳答案

这是我在需要解析所有参数的用例中使用的。您可以使用RequestHeaderMethodArgumentResolver如果只是标题。

创建配置

@Configuration
public class IRSConfig implements WebMvcConfigurer {

@Autowired
private IRSArgumentResolver irsArgumentResolver;

@Override
public void addArgumentResolvers(List<HandlerMethodArgumentResolver> resolvers) {
resolvers.add(irsArgumentResolver);
}
}
<小时/>

创建 POJO 类来封装数据并发送到 RequestHandler

public class MyRequestParams {
private String first;
private String second;

public void setFirst(String first) {
this.first = first;
}

public void setSecond(String second) {
this.second = second;
}

public String getFirst() {
return first;
}

public String getSecond() {
return second;
}
}
<小时/>

创建参数解析器

@Component
public final class IRSArgumentResolver implements HandlerMethodArgumentResolver {

@Override
public boolean supportsParameter(MethodParameter methodParameter) {
return methodParameter.getParameterType().equals(MyRequestParams.class);
}

@Override
public Object resolveArgument(MethodParameter methodParameter, ModelAndViewContainer modelAndViewContainer,
NativeWebRequest nativeWebRequest, WebDataBinderFactory webDataBinderFactory) throws Exception {

MyRequestParams requestParams = new MyRequestParams();

requestParams.setFirst(nativeWebRequest.getParameter("x-et-participant-id"));
requestParams.setSecond(nativeWebRequest.getHeader("Authorization"));

return requestParams;

}
}

关于java - @RequestHeader 不绑定(bind)在 POJO 中,但仅绑定(bind)在变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49305099/

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