如何在Spring mvc中设置控制器中的默认处理程序方法?

时间:2015-02-10 11:35:14

标签: java spring-mvc

我正在开发一个Spring mvc应用程序,我必须在其中显示一个位置列表。我有一个位置的控制器方法。以下是我的控制器方法代码:

@RequestMapping("/location")
public class LocationController {
    @RequestMapping(value = "/home")
    public String showAllLocations(ModelMap modelMap) {
        logger.info("showAllLocations() begins:");
        try {
            List<LocationModel> locationList = locationService
                    .getAllLocations("");
            modelMap.addAttribute("locationlist", locationList);
        } catch (Exception e) {
            logger.debug("Error while getting locations: " + e.getMessage());
            e.printStackTrace();
        }
        return "LocationHome";
    }
}

当我使用以下网址时,它可以正常工作:

http://www.example.com:8080/myapp/location/home

但是当我使用http://www.example.com:8080/myapp/location时,它会显示错误。

如何在不使用&#39; home&#39;的情况下查看位置列表,请访问以下网址:

http://www.example.com:8080/myapp/location

3 个答案:

答案 0 :(得分:1)

@RequestMapping(value = "/home")
public String doHome(ModelMap modelMap) {
   ...
}

@RequestMapping(value = "/**")
public String doDefault(ModelMap modelMap) {
   ...
}

确保在不具体的请求处理程序之前放置更具体的请求处理程序。

答案 1 :(得分:0)

@RequestMapping(value =“/”,method = {RequestMethod.GET,RequestMethod.POST}) 这可以将您映射到默认处理程序。

答案 2 :(得分:0)

此处有LocationController的请求映射,

            @RequestMapping("/location")
            public class LocationController {..}

因此,此控制器截获的所有URL都应具有模式/location,后跟方法请求映射,如此处所示

        @RequestMapping(value = "/home")
        public String showAllLocations(ModelMap modelMap) {..}

如果您需要拦截request的{​​{1}}。只需从控制器中删除url映射并将其分配给方法。