如何在 Spring mvc 中的控制器中设置默认处理程序方法?
How to set default handler method in controller in 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";
}
}
当我关注 URL:
时它工作正常
http://www.example.com:8080/myapp/location/home
但是当我使用http://www.example.com:8080/myapp/location时,它显示错误。
如何在不使用 'home' 的情况下查看位置列表,方法是 URL:
@RequestMapping(value = "/home")
public String doHome(ModelMap modelMap) {
...
}
@RequestMapping(value = "/**")
public String doDefault(ModelMap modelMap) {
...
}
确保将更具体的请求处理程序放在不太具体的请求处理程序之前。
@RequestMapping(value = "/", method = { RequestMethod.GET, RequestMethod.POST })
这可以将您映射到默认处理程序。
您在这里有 LocationController
的请求映射,
@RequestMapping("/location")
public class LocationController {..}
因此,此控制器拦截的所有 URL 都应具有模式 /location
,后跟方法请求映射,如此处,
@RequestMapping(value = "/home")
public String showAllLocations(ModelMap modelMap) {..}
如果你需要为 http://www.example.com:8080/myapp/location
拦截 request
。只需从控制器中删除 url 映射并将其分配给方法即可。
我正在开发 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时,它显示错误。
如何在不使用 'home' 的情况下查看位置列表,方法是 URL:
@RequestMapping(value = "/home")
public String doHome(ModelMap modelMap) {
...
}
@RequestMapping(value = "/**")
public String doDefault(ModelMap modelMap) {
...
}
确保将更具体的请求处理程序放在不太具体的请求处理程序之前。
@RequestMapping(value = "/", method = { RequestMethod.GET, RequestMethod.POST }) 这可以将您映射到默认处理程序。
您在这里有 LocationController
的请求映射,
@RequestMapping("/location")
public class LocationController {..}
因此,此控制器拦截的所有 URL 都应具有模式 /location
,后跟方法请求映射,如此处,
@RequestMapping(value = "/home")
public String showAllLocations(ModelMap modelMap) {..}
如果你需要为 http://www.example.com:8080/myapp/location
拦截 request
。只需从控制器中删除 url 映射并将其分配给方法即可。