gpt4 book ai didi

java - 如何在 spring-rest 中嵌套@PathVariable?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:47 25 4
gpt4 key购买 nike

我有一个简单的@RestController 服务,它接受查询参数,spring 自动将它们解析为一个bean:

@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/rest", method = RequestMethod.GET)
public MyDTO getGiataHotel(@Valid MyParams p) {
Sysout(p.getId()); //prints "123"
}

public class MyParams {
private int id;
//private SubParams subs;
}

查询:.../rest?id=123

现在我想用嵌套类构造参数对象。我怎样才能做到这一点?

public class SubParams {
private String name;
//some more
}

理想情况下,我的查询应该是:Query: .../rest?id=123&name=test,并且“test”字符串应该进入 SubParams bean。

这可能吗?

最佳答案

如果你需要设置为内部类,你必须注册一个Custom Covertor。更改如下:

@ResponseStatus(HttpStatus.OK)
@RequestMapping(value = "/rest", method = RequestMethod.GET)
public MyDTO getGiataHotel(@ModelAttribute("subParam") MyParams params, @Valid MyParams p) {
//Do stuff
}

subParam 表示有一个转换器注册用于转换。

public class MyParamsConverter implements Converter<String, MyParams> {

@Override
public MyParams convert(String name) {
MyParams myParams = new MyParams();
SubParams subParams = new SubParams();
subParams.setName(name);
myParams.setSubParams(subParams);
return myParams;
}

}

关于java - 如何在 spring-rest 中嵌套@PathVariable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32327179/

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