Ответ 1
Для меня нет проблем с разделением нескольких параметров запятой, даже если они являются частью пути вместо параметров запроса. Я тестировал его, и он действительно работает.
На самом деле вы можете даже напрямую привязываться к int
, если вам не нужно проверять правильность этих параметров. Я использовал @PathVariable
для этих привязок.
@GET
@Produces("application/json")
@Path("{parameter1}/july/{param2},{param3},{param4}/month")
public Month getResult(@PathVariable("parameter1") String parameter1, @PathVariable("param2") int param2 , @PathVariable("param3") int param3, @PathVariable("param4") int param4) {
return action.getResult(parameter1, param2, param3,param3);
}
Изменить:
Что касается кода, который я тестировал, это он:
@Controller
public class InfoController {
@RequestMapping(method = RequestMethod.GET, value = "/seating/{param1},{param2},{param3}/month")
public String showMonthView(Model uiModel, @PathVariable("param1") int p1,
@PathVariable("param2") int p2, @PathVariable("param3") int p3,
HttpServletRequest httpServletRequest) {
LOG.debug(String.format("view:/seating/%d,%d,%d/month", p1, p2, p3));
uiModel.addAttribute("param1", p1);
uiModel.addAttribute("param2", p2);
uiModel.addAttribute("param3", p3);
return "month";
}
@ResponseBody
@RequestMapping(method = RequestMethod.GET, value = "/seating/{param1},{param2},{param3}/month", produces="application/json")
public Map<String, Integer> showMonthJson(@PathVariable("param1") final int p1,
@PathVariable("param2") final int p2, @PathVariable("param3") final int p3) {
LOG.debug(String.format("json:/seating/%d,%d,%d/month", p1, p2, p3));
Map<String, Integer> result = new HashMap<String, Integer>() {{
put("param1", p1);
put("param2", p2);
put("param3", p3);
}};
return result;
}
}
С правильным представлением, расположенным в /seating/month.jsp для первого метода.
В качестве альтернативы, возвращение объекта, состоящего из трех параметров и создания json или xml, тоже не создает проблем.