Spring mvc: есть ли способ вызвать другой контроллер, получить ответ и заполнить его атрибутом модели? - PullRequest
0 голосов
/ 27 мая 2020

У меня есть две конечные точки стиля mvc, возвращающие имена файлов шаблонов в качестве имен представлений в одном и том же пути к классам: / source и / target. Source_template имеет переменную, которая должна быть заполнена содержимым другого шаблона, например target_template.

@RestController
class SomeController {

    @GetMapping("/source")
    public String source(Model model) {       
        model.addAttribute("attr1", /*call endpoint /target and add the response of parsed template 'target_template' here */);

        return "source_template";
    }

    @GetMapping("/target")
    public String target(Model model) {
        model.addAttribute("attr2", "good");
        //may be continue the nested invocation n number of times
        return "target_template";
    }
}

с учетом source_template. html: Hai, $ attr1 и target_template. html: это имеет был день $ attr2

сказав, что я вызываю URL / источник, я должен получить «Привет, это был хороший день».

Я могу просто вызвать метод target () напрямую, но это не приведет к отображению шаблона. Или я должен напрямую использовать apis механизма шаблонов, чтобы связать файл шаблона, поместить объект контекста, проанализировать шаблон и вернуть строку, что противоречит всей цели spring mvc. Или я могу использовать resttemplate, но для этого требуется абсолютный URL-адрес, и производительность снизится. Итак, есть ли другой способ сделать это?

...