Java 在SpringMVC中,如何映射嵌套的URL,如/settings/、/settings/users/、和/settings/users/delete?
在Spring3MVC中,我有一个名为SettingsController的控制器,它有显示用户列表的displayUsers()方法、saveUser()方法和deleteUser()方法。设置构造函数还控制角色和其他内容 我希望能够使用URL路由,以便/settings/users调用displayUsers(),/settings/users/save调用saveUser(),/settings/users/delete调用deleteUser()。 下面是我的代码,我得到了代码后面的错误消息。我做错了什么?谢谢强>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()。 下面是我的代码,我得到了代码后面的错误
@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/分割的两个单词,这是值得怀疑的。此外,这似乎并不“正确”。我觉得我想做的很简单,只是不知道该怎么做。