我正在使用Spring 4和Thymeleaf 3开发一款新应用。
我的LoginController.java
具有以下映射:
@RequestMapping(value = { "/", "/home", "/welcome" }, method = RequestMethod.GET)
public String index(Principal principal) {
//logs debug message
if(logger.isDebugEnabled()){
logger.debug("getWelcome is executed!");
}
return principal != null ? "home/homeSignedIn" : "home/homeNotSignedIn";
}
因此,当我访问应用程序时,未登录被调用页面的是home/homeNotSignedIn.html
,这是在下面发布的。
<!DOCTYPE html>
<html xmlns:th="http://www.thymeleaf.org"
xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
layout:decorate="fragments/app">
<head>
<title th:text="#{view.index.title}">Welcome!</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<div layout:fragment="content">
<div class="container2">
<th:block th:if="${message != null}">
<div th:replace="fragments/alert :: alertFragment (type=${#strings.toLowerCase(message.type)}, message=${message.message})"> </div>
</th:block>
<p />
<p />
<a href="/login" th:href="@{/login}" class="btn btn-large btn-success">Sign up</a>
<p />
</div>
</div>
</body>
</html>
此页面直接引用名为app.html
的文件,其中包含应用程序的布局,如下所示。
我基本上有两个问题。
1)Thymeleaf对此表示不满:
SEVERE: Servlet.service() for servlet [dispatcher] in context with path [/cms-stock] threw exception [Request processing failed; nested exception is org.thymeleaf.exceptions.TemplateInputException: An error happened during template parsing (template: "ServletContext resource [/WEB-INF/templates/home/homeNotSignedIn.html]")] with root cause
java.lang.IllegalArgumentException: layout:decorate/data-layout-decorate must appear in the root element of your template
2)也许与1)相关,我没有加载CSS或JS。
我已经将这个应用程序作为Spring-boot启动了,可能对我来说非常愚蠢,我无法让它运行。然后,调整了另一个应用中的工作pom.xml
,得到了问题2,进一步描述了here。
我在这里不知所措。请指教!