SpringMVC中POST传递参数作为ENUM
如何将POST传递进来的参数当作是实体类中的ENUM属性呢?
例如有实体类Demo:
@Data
public class Demo {
private String id;
private String value;
private Level level;
public enum Level {
LOW,
MEDIUM,
HIGH
}
}又有POST请求:
### Send POST request with json body
POST http://localhost:18443/post-json
Content-Type: application/json
{
"id": 999,
"value": "content",
"level": "LOW"
}如何将 "level": "LOW" 赋值给 Demo 呢?
可以使用 ENUM的valueOf方法,详情如下:
@PostMapping("/post-json")
public void index1(@RequestBody Map<String,String> content) {
Demo demo = new Demo();
demo.setId(content.get("id"));
demo.setValue(content.get("value"));
demo.setLevel(Demo.Level.valueOf(content.get("level")));
System.out.println(demo);
}使用valueOf方法将参数中的相应值当作ENUM。
但是有时候POST传过来的不一定是Demo.Level所期望的值,所以用 try...catch包裹异常:
@PostMapping("/post-json")
public String index1(@RequestBody Map<String,String> content) {
Demo demo = new Demo();
demo.setId(content.get("id"));
demo.setValue(content.get("value"));
try {
demo.setLevel(Demo.Level.valueOf(content.get("level")));
} catch (IllegalArgumentException e) {
return "Not a valid level: " + content.get("level");
}
return demo.toString();
}顺便把返回结果传给前端。
评论已关闭