我尝试在这样的网址中绑定N个参数
/web/appl/<applname>/rule/<rulename>/<attrname1>/<attrval1>/<attrname2>/<attrval2>/.../<attrnameN>/<attrvalN>
与
@RequestMapping(value = "/web/appl/{applname}/rule/{rulename}/{attributes}", method = RequestMethod.GET)
public Object GetService(HttpServletRequest request, @PathVariable("attributes") Map<String, Object> map,
@PathVariable("applname") String applname, @PathVariable("rulename") String rulename)
throws Exception {
...
}
但无法获得<attrval1>/<attrname2>/<attrval2>/.../<attrnameN>/<attrvalN>
答案 0 :(得分:0)
不幸的是,Spring MVC没有提供这样的解决方案。您可以将Matrix Variables视为替代方案。
如果您更喜欢坚持当前的URI方案,那么您必须自己实施解决方案。一种方法是使用路径模式。例如:
@RequestMapping(value = "/web/appl/{applname}/rule/{rule name}/**")
public Object getService(HttpServletRequest request,
@PathVariable("applname") String applname ...) {
String attributesPart = new AntPathMatcher()
.extractPathWithinPattern("/web/appl/{applname}/rule/{rule name}/**",
request.getServletPath());
...
你可以实现你的参数解析器。像
这样的东西@RequestMapping(value = "/web/appl/{applname}/rule/{rule name}/**")
public Object getService(@MyAttributes Map<String, String> attributes,
@PathVariable("applname") String applname ...) {
答案 1 :(得分:0)
使用
String urlAttributes = (String) request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
并获取整个网址。然后根据您的需要解析此URL,如果您没有得到
<attrval1>/<attrname2>/<attrval2>/.../<attrnameN>/<attrvalN>
以正确的顺序然后你可以抛出异常。