/** * Create a RequestContext to expose under the specified attribute name. * <p>The default implementation creates a standard RequestContext instance for the * given request and model. Can be overridden in subclasses for custom instances. * @param request current HTTP request * @param model combined output Map (never {@code null}), * with dynamic values taking precedence over static attributes * @return the RequestContext instance * @see #setRequestContextAttribute * @see org.springframework.web.servlet.support.RequestContext */ protected RequestContext createRequestContext( HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) { return new RequestContext(request, response, getServletContext(), model); }
/** * @see org.springframework.web.servlet.support.RequestContext#getBindStatus(String) */ public BindStatus getBindStatus(String path) throws IllegalStateException { return new BindStatus(new RequestContext(this.request), path, false); }
/** * @see org.springframework.web.servlet.support.RequestContext#getBindStatus(String, boolean) */ public BindStatus getBindStatus(String path, boolean htmlEscape) throws IllegalStateException { return new BindStatus(new RequestContext(this.request), path, true); }
/** * Create a RequestContext to expose under the specified attribute name. * <p>The default implementation creates a standard RequestContext instance for the * given request and model. Can be overridden in subclasses for custom instances. * @param request current HTTP request * @param model combined output Map (never {@code null}), * with dynamic values taking precedence over static attributes * @return the RequestContext instance * @see #setRequestContextAttribute * @see org.springframework.web.servlet.support.RequestContext */ protected RequestContext createRequestContext( HttpServletRequest request, HttpServletResponse response, Map<String, Object> model) { return new RequestContext(request, response, getServletContext(), model); }
new RequestContext(request, response, getServletContext(), model));
/** * Exposes a JSTL LocalizationContext for Spring's locale and MessageSource. * @see JstlUtils#exposeLocalizationContext */ @Override protected void exposeHelpers(HttpServletRequest request) throws Exception { if (this.messageSource != null) { JstlUtils.exposeLocalizationContext(request, this.messageSource); } else { JstlUtils.exposeLocalizationContext(new RequestContext(request, getServletContext())); } }
@Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { Assert.state(this.renderer != null, "No Renderer set"); exposeModelAsRequestAttributes(model, request); if (this.exposeJstlAttributes) { JstlUtils.exposeLocalizationContext(new RequestContext(request, getServletContext())); } if (this.alwaysInclude) { request.setAttribute(AbstractRequest.FORCE_INCLUDE_ATTRIBUTE_NAME, true); } Request tilesRequest = createTilesRequest(request, response); this.renderer.render(getUrl(), tilesRequest); }
@Override protected void exposeBindingResult(Errors errors) { // wrap errors in a Model Map model = new HashMap(); model.put(BindingResult.MODEL_KEY_PREFIX + COMMAND_NAME, errors); // replace the request context with one containing the errors MockPageContext pageContext = getPageContext(); RequestContext context = new RequestContext((HttpServletRequest) pageContext.getRequest(), model); pageContext.setAttribute(RequestContextAwareTag.REQUEST_CONTEXT_PAGE_ATTRIBUTE, context); }
@Override protected void exposeBindingResult(Errors errors) { // wrap errors in a Model Map model = new HashMap(); model.put(BindingResult.MODEL_KEY_PREFIX + COMMAND_NAME, errors); // replace the request context with one containing the errors MockPageContext pageContext = getPageContext(); RequestContext context = new RequestContext((HttpServletRequest) pageContext.getRequest(), model); pageContext.setAttribute(RequestContextAwareTag.REQUEST_CONTEXT_PAGE_ATTRIBUTE, context); }
@Test public void testGetContextUrlWithMap() throws Exception { request.setContextPath("foo/"); RequestContext context = new RequestContext(request, response, servletContext, model); Map<String, Object> map = new HashMap<>(); map.put("foo", "bar"); map.put("spam", "bucket"); assertEquals("foo/bar?spam=bucket", context.getContextUrl("{foo}?spam={spam}", map)); }
@Test public void testGetContextUrlWithMapEscaping() throws Exception { request.setContextPath("foo/"); RequestContext context = new RequestContext(request, response, servletContext, model); Map<String, Object> map = new HashMap<>(); map.put("foo", "bar baz"); map.put("spam", "&bucket="); assertEquals("foo/bar%20baz?spam=%26bucket%3D", context.getContextUrl("{foo}?spam={spam}", map)); }
/** * Exposes a JSTL LocalizationContext for Spring's locale and MessageSource. * @see JstlUtils#exposeLocalizationContext */ @Override protected void exposeHelpers(HttpServletRequest request) throws Exception { if (this.messageSource != null) { JstlUtils.exposeLocalizationContext(request, this.messageSource); } else { JstlUtils.exposeLocalizationContext(new RequestContext(request, getServletContext())); } }
protected void exposeBindingResult(Errors errors) { // wrap errors in a Model Map<String, Object> model = Collections.singletonMap( BindingResult.MODEL_KEY_PREFIX + COMMAND_NAME, errors); // replace the request context with one containing the errors MockPageContext pageContext = getPageContext(); RequestContext context = new RequestContext((HttpServletRequest) pageContext.getRequest(), model); pageContext.setAttribute(RequestContextAwareTag.REQUEST_CONTEXT_PAGE_ATTRIBUTE, context); }
@Override protected void renderMergedOutputModel( Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { RequestContext rc = new RequestContext(request, model); rc.getBindStatus("dataClass"); rc.getBindStatus("dataClass.param1"); rc.getBindStatus("dataClass.param2"); rc.getBindStatus("dataClass.param3"); response.getWriter().write(this.content); } }
@Override protected void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception { Assert.state(this.renderer != null, "No Renderer set"); exposeModelAsRequestAttributes(model, request); if (this.exposeJstlAttributes) { JstlUtils.exposeLocalizationContext(new RequestContext(request, getServletContext())); } if (this.alwaysInclude) { request.setAttribute(AbstractRequest.FORCE_INCLUDE_ATTRIBUTE_NAME, true); } Request tilesRequest = createTilesRequest(request, response); this.renderer.render(getUrl(), tilesRequest); }
throw new ServletException("Incorrect theme name"); RequestContext rc = new RequestContext(request); rc.changeLocale(Locale.US, TimeZone.getTimeZone("GMT+1")); rc.changeTheme("theme2");
@Test public void testGetContextUrl() throws Exception { request.setContextPath("foo/"); RequestContext context = new RequestContext(request, response, servletContext, model); assertEquals("foo/bar", context.getContextUrl("bar")); }
@Test public void testPathToServlet() throws Exception { request.setContextPath("/app"); request.setServletPath("/servlet"); RequestContext context = new RequestContext(request, response, servletContext, model); assertEquals("/app/servlet", context.getPathToServlet()); request.setAttribute(WebUtils.FORWARD_CONTEXT_PATH_ATTRIBUTE, "/origApp"); request.setAttribute(WebUtils.FORWARD_SERVLET_PATH_ATTRIBUTE, "/origServlet"); assertEquals("/origApp/origServlet", context.getPathToServlet()); }
@Test @SuppressWarnings("rawtypes") public void requestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest(), pc.getServletContext()); assertEquals("test message", rc.getMessage("test")); assertEquals("test message", rc.getMessage("test", (Object[]) null)); assertEquals("test message", rc.getMessage("test", "default")); assertEquals("test message", rc.getMessage("test", (Object[]) null, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", new String[] {"arg1", "arg2"}, "default")); assertEquals("test arg1 message arg2", rc.getMessage("testArgs", Arrays.asList(new String[] {"arg1", "arg2"}), "default")); assertEquals("default", rc.getMessage("testa", "default")); assertEquals("default", rc.getMessage("testa", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"test"}); assertEquals("test message", rc.getMessage(resolvable)); }
@Test @SuppressWarnings("rawtypes") public void requestContext() throws ServletException { PageContext pc = createPageContext(); RequestContext rc = new RequestContext((HttpServletRequest) pc.getRequest()); assertEquals("theme test message", rc.getThemeMessage("themetest")); assertEquals("theme test message", rc.getThemeMessage("themetest", (String[]) null)); assertEquals("theme test message", rc.getThemeMessage("themetest", "default")); assertEquals("theme test message", rc.getThemeMessage("themetest", (Object[]) null, "default")); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", new String[] {"arg1"})); assertEquals("theme test message arg1", rc.getThemeMessage("themetestArgs", Arrays.asList(new String[] {"arg1"}))); assertEquals("default", rc.getThemeMessage("themetesta", "default")); assertEquals("default", rc.getThemeMessage("themetesta", (List) null, "default")); MessageSourceResolvable resolvable = new DefaultMessageSourceResolvable(new String[] {"themetest"}); assertEquals("theme test message", rc.getThemeMessage(resolvable)); }