Question

I have a controller with request mapping as @RequestMapping("/**") What does it mean?

If I want to exclude certain url pattern from the above mapping how would I do that?

Could someone please shed some light on it?

Was it helpful?

Solution

Your URL will intercept all requests matching '/**'. Depending on where you are defining this I am not sure why you would want to do this. On class level this should define the base path while on method level it should be refined to the specific function.

If you would like to exclude a pattern you could define another controller that is ordered at a higher priority to the controller specifying '/**'

Here are 2 good references from spring source:

  1. http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/web/bind/annotation/RequestMapping.html

  2. http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/mvc.html

OTHER TIPS

I was able to achieve "url exclusion" or "not matching url" through the use of the Regex "negative lookahead" construct.

I want my handler to handel everything other than static resources, i.e. CSS/Images/JS, and error pages.

To prevent that handeling of error pages i.e. resourceNotFound you will need to

  1. Edit the web.xml /web-app/error-page to prefix the error url with /error/
  2. Edit the WEB-INF/spring/webmvc-config.xml /beans/mvc:view-controller/@path handel your new mappings
  3. Edit the WEB-INF/spring/webmvc-config.xml /beans/bean[@class=**SimpleMappingExceptionResolver] to map all exceptions to error/...

In your controller use the below

@Controller
@RequestMapping(value = { "/" })
public class CmsFrontendController {

  @RequestMapping(value = { "/" }, headers = "Accept=text/html")
  public String index(Model ui) {
      return addMenu(ui, "/");
  }

  @RequestMapping(value = { "{path:(?!resources|error).*$}", "{path:(?!resources|error).*$}/**" }, headers = "Accept=text/html")
  public String index(Model ui, @PathVariable(value = "path")String path) {
      try {
          path = (String) request.getAttribute(
                  HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
          return addMenu(ui, path);
      } catch (Exception e) {
          log.error("Failed to render the page. {}", StackTraceUtil.getStackTrace(e));
          return "error/general";
      }
  }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top