get url中RequestParam的允许值

时间:2017-03-06 18:43:52

标签: java spring-boot mybatis spring-mybatis

是否可以为@RequestParam(value = "id") String id)设置可能的值 ?

理想情况是:我提供一些List<String> allowedValues并自动验证它。 (此列表将从数据库加载)。

2 个答案:

答案 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回答。

希望这有帮助。