/*
 * Copyright 2002-2017 the original author or authors.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package org.springframework.web.method.support;

import org.springframework.core.MethodParameter;
import org.springframework.lang.Nullable;
import org.springframework.web.context.request.NativeWebRequest;

Strategy interface to handle the value returned from the invocation of a handler method .
Author:Arjen Poutsma
See Also:
Since:3.1
/** * Strategy interface to handle the value returned from the invocation of a * handler method . * * @author Arjen Poutsma * @since 3.1 * @see HandlerMethodArgumentResolver */
public interface HandlerMethodReturnValueHandler {
Whether the given method return type is supported by this handler.
Params:
  • returnType – the method return type to check
Returns:true if this handler supports the supplied return type; false otherwise
/** * Whether the given {@linkplain MethodParameter method return type} is * supported by this handler. * @param returnType the method return type to check * @return {@code true} if this handler supports the supplied return type; * {@code false} otherwise */
boolean supportsReturnType(MethodParameter returnType);
Handle the given return value by adding attributes to the model and setting a view or setting the ModelAndViewContainer.setRequestHandled flag to true to indicate the response has been handled directly.
Params:
  • returnValue – the value returned from the handler method
  • returnType – the type of the return value. This type must have previously been passed to supportsReturnType which must have returned true.
  • mavContainer – the ModelAndViewContainer for the current request
  • webRequest – the current request
Throws:
  • Exception – if the return value handling results in an error
/** * Handle the given return value by adding attributes to the model and * setting a view or setting the * {@link ModelAndViewContainer#setRequestHandled} flag to {@code true} * to indicate the response has been handled directly. * @param returnValue the value returned from the handler method * @param returnType the type of the return value. This type must have * previously been passed to {@link #supportsReturnType} which must * have returned {@code true}. * @param mavContainer the ModelAndViewContainer for the current request * @param webRequest the current request * @throws Exception if the return value handling results in an error */
void handleReturnValue(@Nullable Object returnValue, MethodParameter returnType, ModelAndViewContainer mavContainer, NativeWebRequest webRequest) throws Exception; }