Я пытаюсь получить HTML-страницу, которую я создал. Это структура моего проекта:
Это класс "IndexController":
@RestController
@AllArgsConstructor
@RequestMapping(path = "/webpage")
public class IndexController {
@GetMapping(path = {"mainpage"})
@ResponseBody
public String index(){
return "Index";
}
@PostMapping("/check")
public String CheckDataset(@ModelAttribute CheckModel checkModel){
System.out.println(checkModel);
return null;
}
}
Когда я открываю веб-страницу HTML непосредственно из intellij:
Открывается отлично, но когда я пытаюсь открыть HTML из Spring Boot, возвращается только строка «Index».
У вас есть идеи, как это решить?




Чтобы вернуть HTML-страницу (представление), вы должны использовать Spring MVC, то есть @Controller вместо @RestController и вернуть ModelAndView с index в качестве имени представления:
@Controller
@AllArgsConstructor
@RequestMapping("/webpage")
public class IndexController {
@GetMapping(path = {"mainpage"})
public ModelAndView index() {
final var modelAndView = new ModelAndView();
modelAndView.setViewName("index");
return modelAndView;
}
// other methods
}
Обратите внимание, что ваш класс IndexController не должен иметь @RestController, если вам нужно показать HTML-страницу. Он должен иметь только @Controller.
Простыми словами @RestController = @Controller + @ResponseBody
В вашем случае аннотация @RestController, которую вы использовали, делает все методы внутри нее @ResponseBody по умолчанию, и вам не нужно явно указывать
@ResponseBody аннотация не показывает вид, а отправляет ответ String.
Действия по устранению этой проблемы:
@RestController на @Controller на уровне класса@ResponseBody из метода, в котором вы планируете показывать HTML.Таким образом, ваш код будет
@Controller
@AllArgsConstructor
@RequestMapping(path = "/webpage")
public class IndexController {
@GetMapping(path = {"mainpage"})
public String index(){
return "Index";
}
//Other methods
}
Просто убедитесь, что у вас есть зависимость spring-boot-starter-thymeleaf в вашем POM.xml.
Спасибо.
Спасибо! Это не работает в моем случае, но спасибо за ваше предложение.