Подтвердить что ты не робот

Пользовательский контроллер без названия

Сейчас я изучаю, как работает слой контроллера Spring. Если я хочу иметь контроллер, который возвращает модель и имя представления (например, имя файла HTML), я просто расширяю класс AbstractController, затем реализую метод handleRequestInternal, регистрируя этот контроллер как bean и устанавливая в моем HandlerMapping (например, SimpleUrlHandlerMapping) какой путь сопоставляется с каким контроллером.

Но это заставляет меня возвращать имя вида.

Что делать, если я не хочу указывать имя представления и просто возвращать String (например, форматированный json или обычный текст) или Object для отображения того же, что и @RestController?

ИЗМЕНИТЬ.

Или, может быть, другими словами. Какой слой с надстройкой bean следует использовать, чтобы опустить имя представления и модель отображения так же, как json/xml/plain text?

ОТВЕТ.

Я не смог найти JSON-представление bean, предоставленное Spring.

Обходной путь, который я сделал, заключался в создании собственного JSONViewResolver, зарегистрировать его как bean, а затем указать в контроллере, какой вид я хочу.

public class JsonViewResolver implements ViewResolver {

    @Override
    public View resolveViewName(String viewName, Locale locale) throws Exception {
    MappingJackson2JsonView mappingJackson2JsonView = new MappingJackson2JsonView();
    mappingJackson2JsonView.setPrettyPrint(true);
    return mappingJackson2JsonView;
    }
}
4b9b3361

Ответ 1

@nowszy94 - просто укажите @ResponseBody перед этим методом. Spring автоматически преобразует его в строку вместо того, чтобы проходить через распознаватель вида, чтобы найти jsp.