Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在SpringMVC中,如何映射嵌套的URL,如/settings/、/settings/users/、和/settings/users/delete?_Java_Spring Mvc - Fatal编程技术网

Java 在SpringMVC中,如何映射嵌套的URL,如/settings/、/settings/users/、和/settings/users/delete?

Java 在SpringMVC中,如何映射嵌套的URL,如/settings/、/settings/users/、和/settings/users/delete?,java,spring-mvc,Java,Spring Mvc,在Spring3MVC中,我有一个名为SettingsController的控制器,它有显示用户列表的displayUsers()方法、saveUser()方法和deleteUser()方法。设置构造函数还控制角色和其他内容 我希望能够使用URL路由,以便/settings/users调用displayUsers(),/settings/users/save调用saveUser(),/settings/users/delete调用deleteUser()。 下面是我的代码,我得到了代码后面的错误

在Spring3MVC中,我有一个名为SettingsController的控制器,它有显示用户列表的displayUsers()方法、saveUser()方法和deleteUser()方法。设置构造函数还控制角色和其他内容

我希望能够使用URL路由,以便/settings/users调用displayUsers(),/settings/users/save调用saveUser(),/settings/users/delete调用deleteUser()。

下面是我的代码,我得到了代码后面的错误消息。我做错了什么?谢谢

@Controller
@RequestMapping("/settings")
public class SettingsController {

    @Transactional
    @RequestMapping(value = {"/users/save"}, method = {RequestMethod.POST})
    public ModelAndView saveUser(details removed){
        //details removed
    }

    @RequestMapping(value = {"/users/delete"}, method = {RequestMethod.POST})
    public ModelAndView deleteUser(details removed){
       //details removed
    }

    @RequestMapping(value = {"/users"}, method = RequestMethod.GET)
    public ModelAndView settingsUsers(details removed){
      //details removed
    }

}
错误:

HTTP ERROR: 500

Could not resolve view with name 'settings/users/delete' in servlet with name 'spring'
RequestURI=/das-portal/srv/settings/users/delete

Caused by:

javax.servlet.ServletException: Could not resolve view with name 'settings/users/delete' in servlet with name 'spring'
    at        org.springframework.web.servlet.DispatcherServlet.render(DispatcherServlet.java:1029)
...

在我看来,您的控制器设置正确。正如您所指出的,问题可能在于Spring如何在启动时解析注释

您如何配置Sprint来解析注释,例如
@Controller
?您是否明确设置了任何类型的
HandlerMapping
?如果您使用
,则它将被禁用

好消息是。
DispatcherServlet
将按照您通过指定的顺序检查每个处理程序(换句话说,使用order属性指示处理程序的优先级)


因此,将
放入您的配置中,并根据需要设置其order属性。

只使用一种方法检查模式怎么样

@RequestMapping(value = "/users/{action}", method = RequestMethod.POST)
public String userAction(@PathVariable String action, ...) {
  if (mode.equals("save")) {
      //your save code here
  }
}

我只是返回一个重定向到另一个视图。如果深度小于3段(例如,如果我使用的是设置/userDelete而不是设置/users/delete),则一切正常。我刚刚发现了这个()在我看来可能有关联,但我无法找到解决方案。是的,我正在使用ControllerClassNameHandlerMapping(需要)<代码>当我注释掉这3个bean中的第2个时,这是有效的:
但是我需要第2个bean也工作,作为第2个优先级,但它没有顺序属性。谢谢,我想这是我的功劳
我已经考虑过这个问题,但是{action}需要接受由a/分割的两个单词,这是值得怀疑的。此外,这似乎并不“正确”。我觉得我想做的很简单,只是不知道该怎么做。