Web services @RequestParam spring MVC,使两个请求参数中的一个成为必需的
我正在编写一个服务,其中我接受一个id或一个位置,我想强制执行一个约束,即必须在@Controller中指定id或位置Web services @RequestParam spring MVC,使两个请求参数中的一个成为必需的,web-services,spring-mvc,controller,request,Web Services,Spring Mvc,Controller,Request,我正在编写一个服务,其中我接受一个id或一个位置,我想强制执行一个约束,即必须在@Controller中指定id或位置 @Controller public class HelloController { @RequestMapping(value="/loc.json",method = RequestMethod.GET) public @ResponseBody String localiaztionRequest(@RequestParam(value = "locati
@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框架非常陌生
提前谢谢。我认为您应该将其分为两种不同的控制器方法
@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";
}
实现这一点的一种方法(尽管是间接的)是创建一个表示要传入的数据的新对象模型,另一种表示数据类型并需要两个元素
public enum MethodType
{
First,
Second
}
public class Filter
{
[Required]
public MethodType {get;set;}
[Required]
public string Data {get;set;}
}
将此对象用于操作方法和视图
让控制器中的action方法转换对象Java提到了这个问题。答案是正确的,它正在工作,但请注意,第二个@RequestParam不是必需的,在本例中是回调。