我已经用Thymeleaf创建了一个错误页面,并以此方式使用它,因为我可以通过控制器将错误消息发送给用户。
@ExceptionHandler(Exception.class)
public ModelAndView controllerExceptionHandler(
Exception e,
HttpServletRequest request) {
ModelAndView mav = new ModelAndView();
String[] messages = e.getMessage().split("</br>");
mav.addObject("message", messages);
mav.addObject("timestamp", new Date());
mav.addObject("url", request.getRequestURL());
mav.addObject("headerMessage", "Error :(");
mav.addObject("contentMessage", "We are working hard to resolve it.");
mav.setViewName("error");
mav.addObject("status", 500);
return mav;
}
在模板文件中,我有这样的东西:
<h1 class="mr-3 pr-3 align-top border-right inline-block align-content-center" th:text="${status}">404</h1>
<div class="inline-block align-middle">
<div>
<h1>Something went wrong...</h1>
</div>
<th:block th:each="msg : ${message}">
<h2 class="font-weight-normal lead" id="desc" th:text="${msg}">The page you requested was not found.</h2>
</th:block>
</div>
以前,我有一个简单的React JS应用程序,该应用程序也与Spring Boot和Thymeleaf一起运行,然后使用Thymeleaf模板进行演示。我有一个模板index.html实际上是React JS构建文件,因此每次必须将其中的构建文件复制到JS和CSS文件到一个静态文件夹中(构建后)。现在,React APP变得更加复杂,我决定使用frontendmaven插件与后端直接构建它。
在解析ReactJS视图时如何告诉Spring Boot不要尝试使用Thymeleaf?这就是我提供ReactJS视图的方式。
@RequestMapping("/")
public String index() {
return "index.html";
}
还是有可能摆脱Thymeleaf?服务那些视图时,是否可以通过Java控制器将变量发送到ReactJS视图?模型和视图的例子?
答案 0 :(得分:2)
在解决时如何告诉Spring Boot不要尝试使用Thymeleaf 反应JS视图?
在Web配置中删除ThymeleafViewResolver并切换到Rest api(@Restcontroller而不是@Controller)。这样,您就告诉Spring不要渲染视图,而是充当api端点。
现在,您可以更新您的react代码,以调用这些使用Maven-frontend-plugin预先构建并部署的Spring rest api。
现在问题来了,您的应用程序的出发点是什么
仅出于此目的,您可以创建一个控制器,该控制器将处理对“ /”的请求,并将返回位于resources / template文件夹下的索引页。该index.html页面将使用您预先构建的react页面作为-
<script src="built/bundle.js"></script>
是否可以通过Java将变量发送到React JS视图 控制器提供这些视图时
这被称为服务器端渲染,但是对于react来说,它不同于jsp和freemarker,thymeleaf等,我想说这不是一种简单的方法来实现react。您可以尝试使用--https://codeburst.io/jsx-react-js-java-server-side-rendering-ssr-2018-cf3aaff7969d