是否可以为@RequestParam(value = "id") String id)
设置可能的值
?
理想情况是:我提供一些List<String> allowedValues
并自动验证它。 (此列表将从数据库加载)。
答案 0 :(得分:1)
使用枚举而不是字符串并定义枚举值
@RequestMapping(value = "yourRestEndPoint", method = RequestMethod.GET)
public anyReturnType methodName(@RequestParam(defaultValue = "ONE") IdValue id) {
....
}
并定义一个单独的类,例如
public enum IdValue {
ONE, TWO, THREE
}
答案 1 :(得分:0)
这是可能的,但不是一些神奇的方式,而是通过简单的验证检查。
<强>例如强>
@RequestMapping(value = "yourRestEndPoint", method = RequestMethod.GET)
public anyReturnType methodName(@RequestParam(value = "id") String id){
List<String> allowedValues = getAllowedValuesFromDB();
if(allowedValues.contains(id)){//check if incoming ID belongs to Allowed Values
//Do your action....
}
}
private List<String> getAllowedValuesFromDB(){
List<String> allowedValues = new ArrayList<>();
//fetch list from DB
//set fetched values to above List
return allowedValues;
}
第二种方式
如果你想这样做,就像我们做 Bean Validation 一样,使用 @Valid ,这对于Bean来说不仅仅是一个参数,还需要配置Validator,然后查看this&amp; this回答。
希望这有帮助。