Java 中抛出的自定义异常应该显示在 Thymeleaf 中

Custom Exception thrown in Java should be shown in Thymeleaf

我想显示在 Thymeleaf 的 Java 代码中抛出的自定义异常。

@Override
public UserDetails loadUserByUsername(String benutzername) throws UsernameNotFoundException {
    Benutzer benutzer = userRepository.findByBenutzername(benutzername);
    if (benutzer == null || ! benutzer.isActive()) {
        throw new UsernameNotFoundException("Wrong username or password was provided!");
    }

<div th:if="${param.error}" >
    <div class="alert alert-danger">
        Here should my custom exception appear from above.
    </div>
</div>

我抛出了一个带有自定义异常的新 UsernameNotFoundException,这个异常应该显示在我的模板中,但是,我不知道应该如何完成。

在 application.properties 中定义 属性 以使堆栈跟踪作为表达式属性包含在 Thymeleaf 视图中。

server.error.include-stacktrace=always

然后创建一个名为 error.html 的错误页面,如下所示。

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:th="http://www.thymeleaf.org">
<head>
    <style>
table td{
vertical-align:top;
border:solid 1px #888;
padding:10px;
}

    </style>
</head>
<body>
<h1>My Thymeleaf Error Page</h1>
<table>
    <tr>
        <td>Date</td>
        <td th:text="${timestamp}"/>
    </tr>
    <tr>
        <td>Path</td>
        <td th:text="${path}"/>
    </tr>
    <tr>
        <td>Error</td>
        <td th:text="${error}"/>
    </tr>
    <tr>
        <td>Status</td>
        <td th:text="${status}"/>
    </tr>
    <tr>
        <td>Message</td>
        <td th:text="${message}"/>
    </tr>
    <tr>
        <td>Exception</td>
        <td th:text="${exception}"/>
    </tr>
    <tr>
        <td>Trace</td>
        <td>
            <pre th:text="${trace}"/>
        </td>
    </tr>
</table>
</body>
</html>

完整示例请参考 this