【问题标题】:How to set default handler method in controller in Spring mvc?如何在 Spring mvc 的控制器中设置默认处理程序方法?
【发布时间】:2015-02-10 11:35:14
【问题描述】:

我正在开发一个 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";
    }
}

当我使用以下 URL 时它工作正常:

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

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

如何在不使用“家”的情况下通过以下 URL 查看位置列表:

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

【问题讨论】:

  • 你试过加@RequestMapping(value = "")
  • 值可以是一个数组。 @RequestMapping(value = { "/home", "/" } )

标签: java spring-mvc


【解决方案1】:
@RequestMapping(value = "/home")
public String doHome(ModelMap modelMap) {
   ...
}

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

      这里有LocationController的请求映射,

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

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

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

      如果需要拦截requesthttp://www.example.com:8080/myapp/location 。只需从控制器中删除 url 映射并将其分配给方法即可。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-03-28
        • 1970-01-01
        • 1970-01-01
        • 2013-01-03
        • 1970-01-01
        • 2015-12-05
        • 1970-01-01
        相关资源
        最近更新 更多