我正在编写一个服务,其中我接收了一个id或一个位置,我想强制执行必须在我的@Controller中指定id或位置的约束
@Controller
public class HelloController {
@RequestMapping(value="/loc.json",method = RequestMethod.GET)
public @ResponseBody String localiaztionRequest(@RequestParam(value = "location", required = false) String callback
,@RequestParam(value = "id", required = false) String uuid
,@RequestParam(value = "callback", required = false) String callback) {
//model.addAttribute("message", "Hello world!");
return "hello";
}
为清楚起见,我希望每个请求都发送location参数或id参数。如何对一对输入参数强制执行此类约束?另外,有人可以向我解释ModelMap的使用,model.addAttribute的效果是什么(" message"," Hello World!")? 对不起,如果问题看起来很幼稚,我对Spring框架非常陌生。
提前致谢。
答案 0 :(得分:2)
我认为你应该将它分成两种不同的控制器方法
@RequestMapping(value="/loc.json",method = RequestMethod.GET, params={"location"})
public @ResponseBody String localizationRequestByLoc(@RequestParam String location, @RequestParam String callback) {
//model.addAttribute("message", "Hello world!");
return "hello";
}
@RequestMapping(value="/loc.json",method = RequestMethod.GET, params={"id"})
public @ResponseBody String localizationRequestById(@RequestParam String id, @RequestParam String callback) {
//model.addAttribute("message", "Hello world!");
return "hello";
}
答案 1 :(得分:0)
实现这一目标的一种方法(虽然是间接的)是创建一个表示要传入的数据的新对象模型,另一个表示数据类型并需要两个元素。
public enum MethodType
{
First,
Second
}
public class Filter
{
[Required]
public MethodType {get;set;}
[Required]
public string Data {get;set;}
}
将此对象用于操作方法和视图 并让控制器中的action方法转换对象