Search in sources :

Example 11 with RedirectModel

use of cn.taketoday.web.view.RedirectModel in project today-infrastructure by TAKETODAY.

the class AbstractUrlViewController method handleRequestInternal.

/**
 * Retrieves the URL path to use for lookup and delegates to
 * {@link #getViewNameForRequest}. Also adds the content of
 * {@link RequestContextUtils#getInputRedirectModel(RequestContext)} to the model.
 */
@Override
protected ModelAndView handleRequestInternal(RequestContext request) {
    String viewName = getViewNameForRequest(request);
    if (log.isTraceEnabled()) {
        log.trace("Returning view name '{}'", viewName);
    }
    RedirectModel model = RequestContextUtils.getInputRedirectModel(request);
    if (model != null) {
        return new ModelAndView(viewName, model.asMap());
    }
    return new ModelAndView(viewName);
}
Also used : RedirectModel(cn.taketoday.web.view.RedirectModel) ModelAndView(cn.taketoday.web.view.ModelAndView)

Example 12 with RedirectModel

use of cn.taketoday.web.view.RedirectModel in project today-infrastructure by TAKETODAY.

the class UrlFilenameViewControllerTests method withFlashAttributes.

@PathPatternsParameterizedTest
void withFlashAttributes(Function<String, RequestContext> requestFactory) throws Exception {
    UrlFilenameViewController controller = new UrlFilenameViewController();
    RequestContext request = requestFactory.apply("/index");
    request.setAttribute(RedirectModel.INPUT_ATTRIBUTE, new RedirectModel("name", "value"));
    ModelAndView mv = controller.handleRequest(request);
    assertThat(mv.getViewName()).isEqualTo("index");
    assertThat(mv.getModel().size()).isEqualTo(1);
    assertThat(mv.getModel().get("name")).isEqualTo("value");
}
Also used : RedirectModel(cn.taketoday.web.view.RedirectModel) ModelAndView(cn.taketoday.web.view.ModelAndView) RequestContext(cn.taketoday.web.RequestContext) ServletRequestContext(cn.taketoday.web.servlet.ServletRequestContext) MockServletRequestContext(cn.taketoday.web.servlet.MockServletRequestContext) PathPatternsParameterizedTest(cn.taketoday.web.view.PathPatternsParameterizedTest)

Example 13 with RedirectModel

use of cn.taketoday.web.view.RedirectModel in project today-framework by TAKETODAY.

the class ModelParameterResolver method resolveParameter.

/**
 * Resolve {@link Model} parameter.
 */
@Override
public Object resolveParameter(RequestContext context, ResolvableMethodParameter resolvable) throws Throwable {
    if (resolvable.isAssignableTo(RedirectModel.class)) {
        // RedirectModel
        RedirectModel redirectModel = new RedirectModel();
        RedirectModelManager modelManager = getModelManager();
        // @since 3.0.3 checking model manager
        if (modelManager != null) {
            context.setAttribute(RedirectModel.OUTPUT_ATTRIBUTE, redirectModel);
            modelManager.saveRedirectModel(context, redirectModel);
        }
        return redirectModel;
    }
    if (resolvable.isAssignableTo(ModelAndView.class)) {
        return context.modelAndView();
    }
    // @since 3.0
    if (resolvable.is(HttpHeaders.class)) {
        return context.requestHeaders();
    }
    if (resolvable.is(Map.class)) {
        // Model Map
        return context.asMap();
    }
    return context;
}
Also used : RedirectModel(cn.taketoday.web.view.RedirectModel) RedirectModelManager(cn.taketoday.web.view.RedirectModelManager)

Aggregations

RedirectModel (cn.taketoday.web.view.RedirectModel)13 ModelAndView (cn.taketoday.web.view.ModelAndView)6 BindingContext (cn.taketoday.web.BindingContext)4 Test (org.junit.jupiter.api.Test)4 Nullable (cn.taketoday.lang.Nullable)2 RequestContext (cn.taketoday.web.RequestContext)2 AsyncWebRequest (cn.taketoday.web.context.async.AsyncWebRequest)2 WebAsyncManager (cn.taketoday.web.context.async.WebAsyncManager)2 MockServletRequestContext (cn.taketoday.web.servlet.MockServletRequestContext)2 ServletRequestContext (cn.taketoday.web.servlet.ServletRequestContext)2 PathPatternsParameterizedTest (cn.taketoday.web.view.PathPatternsParameterizedTest)2 RequestContextDataBinder (cn.taketoday.web.bind.RequestContextDataBinder)1 HandlerMethod (cn.taketoday.web.handler.method.HandlerMethod)1 ModelMap (cn.taketoday.web.view.ModelMap)1 RedirectModelManager (cn.taketoday.web.view.RedirectModelManager)1 Method (java.lang.reflect.Method)1