我正在尝试获取我创建的 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;
}
}
当我直接从intellij打开HTML网页时:
完美打开,但是当我尝试从 Spring Boot 打开 HTML 时,只返回“索引”字符串。
你知道如何解决这个问题吗?
要返回 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
}
请注意,如果您需要显示 HTML 页面,您的类 IndexController 不应具有 @RestController,它应仅具有 @Controller。
简单来说@RestController = @Controller + @ResponseBody
在您的情况下,您使用的@RestController 注释默认将其中的所有方法设为@ResponseBody,您不必明确提及
@ResponseBody 注释不显示视图,而是发送一个字符串响应。
解决此问题的步骤:
谢谢。