Это мой контроллер:

@RestController
public class GraphController {

    @GetMapping("/displayBarGraph")
    public String barGraph(Model model) {
        Map<String, Integer> surveyMap = new LinkedHashMap<>();
        surveyMap.put("Java", 40);
        surveyMap.put("Dev oops", 25);
        surveyMap.put("Python", 20);
        surveyMap.put(".Net", 15);
        model.addAttribute("surveyMap", surveyMap);
        return "barGraph";
    }

    @GetMapping("/displayPieChart")
    public String pieChart(Model model) {
        model.addAttribute("pass", 50);
        model.addAttribute("fail", 50);
        return "pieChart";
    }

Это мой file.proprieties:

spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
spring.thymeleaf.enabled=false

spring.mvc.view.prefix=/WEB-INF/views/
spring.mvc.view.suffix=.html

Это мои HTML-файлы:

enter image description here

Но он всегда перенаправляет меня вот так:

enter image description here

Любое решение, пожалуйста?

2
Marouen Ghozzi 5 Июл 2021 в 12:40

3 ответа

Лучший ответ
  1. Установка для spring.thymeleaf.enabled значения false отключает Thymeleaf для Spring MVC / Web. Следовательно, контроллер просто возвращает имя шаблона Thymeleaf вместо того, чтобы проходить через разрешение представления Thymeleaf.

    Чтобы решить эту проблему, удалите свойство spring.thymeleaf.enabled или установите для него значение true, которое является по умолчанию для автоконфигурации Thymeleaf :

    spring.thymeleaf.enabled=true
    
  2. Используйте @Controller вместо @RestController при работе с механизмом создания шаблонов, и вы не хотите, чтобы возвращаемое значение было привязано к телу ответа:

    @Controller
    public class GraphController {
    
        @GetMapping("/displayBarGraph")
        public String barGraph(Model model) {
            // ...
            return "barGraph";
        }
    
        // ...
    }
    
  3. Ваш настроенный путь к шаблону должен совпадать с фактическим путем, где хранятся шаблоны. Поэтому либо измените набор spring.thymeleaf.prefix=classpath:/template/ , либо переименуйте каталог template в templates.

  4. Удалите два свойства spring.mvc.view.prefix и spring.mvc.view.suffix из вашей конфигурации. Это необходимо, если вы хотите использовать JSP.

1
Matt 5 Июл 2021 в 12:59

Переименуйте ваш

src/main/resources/template

Папку в

src/main/resources/templates

В названии папки отсутствует буква «s».

0
Ajay Kumar 5 Июл 2021 в 11:23

Пара изменений, чтобы заставить эту работу работать.

  1. Измените @RestController на @Controller, чтобы он возвращал страницу вместо ответа в теле.

  2. Переименуйте папку в шаблоны или измените путь в файле свойств для преобразователя представлений.

  3. нет необходимости в свойствах с включенным тимелистом.

0
Alien 5 Июл 2021 в 12:14