Java Spring MVC N参数数映射
我试着在这样的URL中绑定N个参数Java Spring MVC N参数数映射,java,spring-mvc,url-mapping,Java,Spring Mvc,Url Mapping,我试着在这样的URL中绑定N个参数 /web/appl/<applname>/rule/<rulename>/<attrname1>/<attrval1>/<attrname2>/<attrval2>/.../<attrnameN>/<attrvalN> /web/appl//rule//// 与 @RequestMapping(value=“/web/appl/{applname}/rule/{
/web/appl/<applname>/rule/<rulename>/<attrname1>/<attrval1>/<attrname2>/<attrval2>/.../<attrnameN>/<attrvalN>
/web/appl//rule////
与
@RequestMapping(value=“/web/appl/{applname}/rule/{rulename}/{attributes}”,method=RequestMethod.GET)
公共对象GetService(HttpServletRequest请求,@PathVariable(“属性”)映射,
@PathVariable(“applname”)字符串applname,@PathVariable(“rulename”)字符串rulename)
抛出异常{
...
}
但是无法获取
//…/
的值,不幸的是,SpringMVC没有提供这样的解决方案。你可以考虑另一种选择。
如果您喜欢坚持当前的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 ...) {
@RequestMapping(value=“/web/appl/{applname}/rule/{rule name}/**”)
公共对象getService(@MyAttributes映射属性,
@路径变量(“applname”)字符串applname…){
使用
String urldattributes=(String)request.getAttribute(HandlerMapping.PATH_在_HANDLER_MAPPING_属性中);
然后根据您的需要解析这个URL,就像您没有得到
//…//
按照正确的顺序,然后您可以抛出异常。看一看:
@RequestMapping(value = "/web/appl/{applname}/rule/{rule name}/**")
public Object getService(@MyAttributes Map<String, String> attributes,
@PathVariable("applname") String applname ...) {