/** * Set the prefix that gets prepended to view names when building a URL. * @see org.springframework.web.servlet.view.UrlBasedViewResolver#setPrefix */ public UrlBasedViewResolverRegistration prefix(String prefix) { this.viewResolver.setPrefix(prefix); return this; }
/** * Set the suffix that gets appended to view names when building a URL. * @see org.springframework.web.servlet.view.UrlBasedViewResolver#setSuffix */ public UrlBasedViewResolverRegistration suffix(String suffix) { this.viewResolver.setSuffix(suffix); return this; }
@Test public void testUrlBasedViewResolverWithoutPrefixes() throws Exception { UrlBasedViewResolver vr = new UrlBasedViewResolver(); vr.setViewClass(JstlView.class); doTestUrlBasedViewResolverWithoutPrefixes(vr); }
/** * Delegates to {@code buildView} for creating a new instance of the * specified view class. Applies the following Spring lifecycle methods * (as supported by the generic Spring bean factory): * <ul> * <li>ApplicationContextAware's {@code setApplicationContext} * <li>InitializingBean's {@code afterPropertiesSet} * </ul> * @param viewName the name of the view to retrieve * @return the View instance * @throws Exception if the view couldn't be resolved * @see #buildView(String) * @see org.springframework.context.ApplicationContextAware#setApplicationContext * @see org.springframework.beans.factory.InitializingBean#afterPropertiesSet */ @Override protected View loadView(String viewName, Locale locale) throws Exception { AbstractUrlBasedView view = buildView(viewName); View result = applyLifecycleMethods(viewName, view); return (view.checkResource(locale) ? result : null); }
if (!canHandle(viewName, locale)) { return null; String redirectUrl = viewName.substring(REDIRECT_URL_PREFIX.length()); RedirectView view = new RedirectView(redirectUrl, isRedirectContextRelative(), isRedirectHttp10Compatible()); String[] hosts = getRedirectHosts(); if (hosts != null) { view.setHosts(hosts); return applyLifecycleMethods(REDIRECT_URL_PREFIX, view); String forwardUrl = viewName.substring(FORWARD_URL_PREFIX.length()); InternalResourceView view = new InternalResourceView(forwardUrl); return applyLifecycleMethods(FORWARD_URL_PREFIX, view);
Class<?> viewClass = getViewClass(); Assert.state(viewClass != null, "No view class"); view.setUrl(getPrefix() + viewName + getSuffix()); String contentType = getContentType(); if (contentType != null) { view.setContentType(contentType); view.setRequestContextAttribute(getRequestContextAttribute()); view.setAttributesMap(getAttributesMap()); Boolean exposePathVariables = getExposePathVariables(); if (exposePathVariables != null) { view.setExposePathVariables(exposePathVariables); Boolean exposeContextBeansAsAttributes = getExposeContextBeansAsAttributes(); if (exposeContextBeansAsAttributes != null) { view.setExposeContextBeansAsAttributes(exposeContextBeansAsAttributes); String[] exposedContextBeanNames = getExposedContextBeanNames(); if (exposedContextBeanNames != null) { view.setExposedContextBeanNames(exposedContextBeanNames);
UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix(""); // NOTE: no preffix here resolver.setViewClass(JstlView.class); resolver.setSuffix(""); // NOTE: no suffix here return resolver;
private void doTestUrlBasedViewResolverWithPrefixes(UrlBasedViewResolver vr) throws Exception { StaticWebApplicationContext wac = new StaticWebApplicationContext(); wac.setServletContext(new MockServletContext()); wac.refresh(); vr.setPrefix("/WEB-INF/"); vr.setSuffix(".jsp"); vr.setApplicationContext(wac); View view = vr.resolveViewName("example1", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "/WEB-INF/example1.jsp", ((InternalResourceView) view).getUrl()); view = vr.resolveViewName("example2", Locale.getDefault()); assertEquals("Correct view class", JstlView.class, view.getClass()); assertEquals("Correct URL", "/WEB-INF/example2.jsp", ((InternalResourceView) view).getUrl()); view = vr.resolveViewName("redirect:myUrl", Locale.getDefault()); assertEquals("Correct view class", RedirectView.class, view.getClass()); assertEquals("Correct URL", "myUrl", ((RedirectView) view).getUrl()); view = vr.resolveViewName("forward:myUrl", Locale.getDefault()); assertEquals("Correct view class", InternalResourceView.class, view.getClass()); assertEquals("Correct URL", "myUrl", ((InternalResourceView) view).getUrl()); }
@Bean public UrlBasedViewResolver urlBasedViewResolver() { UrlBasedViewResolver res = new InternalResourceViewResolver(); res.setViewClass(JstlView.class); res.setPrefix("/WEB-INF/"); res.setSuffix(".jsp"); return res; }
UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setSuffix(".jsp"); resolver.setViewClass(JstlView.class); return resolver; UrlBasedViewResolver viewResolver = new UrlBasedViewResolver(); viewResolver.setViewClass(TilesView.class); viewResolver.setOrder(1); return viewResolver;
@Override protected TilesView buildView(String viewName) throws Exception { TilesView view = (TilesView) super.buildView(viewName); if (this.renderer != null) { view.setRenderer(this.renderer); } if (this.alwaysInclude != null) { view.setAlwaysInclude(this.alwaysInclude); } return view; }
/** * Overridden to implement check for "redirect:" prefix. * <p> * Redirect requires special behavior on an Ajax request. */ protected View createView(String viewName, Locale locale) throws Exception { // If this resolver is not supposed to handle the given view, // return null to pass on to the next resolver in the chain. if (!canHandle(viewName, locale)) { return null; } // Check for special "redirect:" prefix. if (viewName.startsWith(REDIRECT_URL_PREFIX)) { String redirectUrl = viewName.substring(REDIRECT_URL_PREFIX.length()); return new AjaxRedirectView(redirectUrl, isRedirectContextRelative(), isRedirectHttp10Compatible()); } return super.createView(viewName, locale); }
/** * Set the view class that should be used to create views. * @see org.springframework.web.servlet.view.UrlBasedViewResolver#setViewClass */ public UrlBasedViewResolverRegistration viewClass(Class<?> viewClass) { this.viewResolver.setViewClass(viewClass); return this; }
/** * Apply the containing {@link ApplicationContext}'s lifecycle methods * to the given {@link View} instance, if such a context is available. * @param viewName the name of the view * @param view the freshly created View instance, pre-configured with * {@link AbstractUrlBasedView}'s properties * @return the {@link View} instance to use (either the original one * or a decorated variant) * @since 5.0 * @see #getApplicationContext() * @see ApplicationContext#getAutowireCapableBeanFactory() * @see org.springframework.beans.factory.config.AutowireCapableBeanFactory#initializeBean */ protected View applyLifecycleMethods(String viewName, AbstractUrlBasedView view) { ApplicationContext context = getApplicationContext(); if (context != null) { Object initialized = context.getAutowireCapableBeanFactory().initializeBean(view, viewName); if (initialized instanceof View) { return (View) initialized; } } return view; }
@Bean public UrlBasedViewResolver setupViewResolver() { UrlBasedViewResolver resolver = new UrlBasedViewResolver(); resolver.setPrefix("/WEB-INF/pages/"); resolver.setSuffix(".jsp"); // what you used resolver.setViewClass(JstlView.class); return resolver; }
Class<?> viewClass = getViewClass(); Assert.state(viewClass != null, "No view class"); view.setUrl(getPrefix() + viewName + getSuffix()); String contentType = getContentType(); if (contentType != null) { view.setContentType(contentType); view.setRequestContextAttribute(getRequestContextAttribute()); view.setAttributesMap(getAttributesMap()); Boolean exposePathVariables = getExposePathVariables(); if (exposePathVariables != null) { view.setExposePathVariables(exposePathVariables); Boolean exposeContextBeansAsAttributes = getExposeContextBeansAsAttributes(); if (exposeContextBeansAsAttributes != null) { view.setExposeContextBeansAsAttributes(exposeContextBeansAsAttributes); String[] exposedContextBeanNames = getExposedContextBeanNames(); if (exposedContextBeanNames != null) { view.setExposedContextBeanNames(exposedContextBeanNames);
if (!canHandle(viewName, locale)) { return null; String redirectUrl = viewName.substring(REDIRECT_URL_PREFIX.length()); RedirectView view = new RedirectView(redirectUrl, isRedirectContextRelative(), isRedirectHttp10Compatible()); String[] hosts = getRedirectHosts(); if (hosts != null) { view.setHosts(hosts); return applyLifecycleMethods(REDIRECT_URL_PREFIX, view); String forwardUrl = viewName.substring(FORWARD_URL_PREFIX.length()); InternalResourceView view = new InternalResourceView(forwardUrl); return applyLifecycleMethods(FORWARD_URL_PREFIX, view);
@Override protected AbstractUrlBasedView buildView(String viewName) throws Exception { InternalResourceView view = (InternalResourceView) super.buildView(viewName); if (this.alwaysInclude != null) { view.setAlwaysInclude(this.alwaysInclude); } view.setPreventDispatchLoop(true); return view; }
@Override protected View createView(String viewName, Locale locale) throws Exception { if (viewName.startsWith(REDIRECT_URL_PREFIX)) { String location = viewName.substring(REDIRECT_URL_PREFIX.length()); if (location.startsWith(ADD_CONNECTOR_SUCCESS_CALLBACK_REDIRECT)) { final Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); if (authentication instanceof PreAuthenticatedAuthenticationToken) { PreAuthenticatedAuthenticationToken authToken = (PreAuthenticatedAuthenticationToken) authentication; final Object credentials = authToken.getCredentials(); if (credentials instanceof AuthorizationToken) { AuthorizationToken token = (AuthorizationToken) credentials; final Application applicationForToken = oAuth2MgmtService.getApplicationForToken(token); if (applicationForToken!=null) { String addConnectorCallbackURL = applicationForToken.addConnectorCallbackURL; if (addConnectorCallbackURL != null) { String connectorName = location.substring(location.lastIndexOf("/") + 1); addConnectorCallbackURL += addConnectorCallbackURL.indexOf("?") == -1 ? "?connectorName=" + connectorName : "=connectorName=" + connectorName; return super.createView("redirect:" + addConnectorCallbackURL, locale); } } } } } } return super.createView(viewName, locale); } }
/** * Set the view class that should be used to create views. * @see org.springframework.web.servlet.view.UrlBasedViewResolver#setViewClass */ public UrlBasedViewResolverRegistration viewClass(Class<?> viewClass) { this.viewResolver.setViewClass(viewClass); return this; }