Почему «href» и «th: href» существуют одновременно? - PullRequest
0 голосов
/ 10 февраля 2019

Я читаю страницу с помощью Thymeleaf.

В «Редактировать страницу» есть кнопка «Назад» для возврата на «Страницу списка пользователей».Странно для меня то, что эта кнопка имеет одновременно "href" и "th: href". изображение детали кнопки

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8"/>
    <title>user</title>
    <link rel="stylesheet" th:href="@{/css/bootstrap.css}"></link>
</head>
<body class="container">
<br/>
<h1>修改用户</h1>
<br/><br/>
<div class="with:80%">
    <form class="form-horizontal"   th:action="@{/edit}" th:object="${user}"  method="post">
        <input type="hidden" name="id" th:value="*{id}" />
        <div class="form-group">
            <label for="userName" class="col-sm-2 control-label">userName</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" name="userName"  id="userName" th:value="*{userName}" placeholder="userName"/>
            </div>
        </div>
        <div class="form-group">
            <label for="password" class="col-sm-2 control-label" >Password</label>
            <div class="col-sm-10">
                <input type="password" class="form-control" name="password" id="password"  th:value="*{password}" placeholder="Password"/>
            </div>
        </div>
        <div class="form-group">
            <label for="age" class="col-sm-2 control-label">age</label>
            <div class="col-sm-10">
                <input type="text" class="form-control" name="age"  id="age" th:value="*{age}" placeholder="age"/>
            </div>
        </div>
        <div class="form-group">
            <div class="col-sm-offset-2 col-sm-10">
                <input type="submit" value="Submit" class="btn btn-info" />
                &nbsp; &nbsp; &nbsp;
                <a href="/toAdd" th:href="@{/list}" class="btn btn-info">Back</a>
            </div>

        </div>
    </form>
</div>
</body>
</html>

Очевидно, что th: href предназначен для возврата.Есть ли какое-либо мнение о том, какова функция атрибута "href"?

1 Ответ

0 голосов
/ 11 февраля 2019

ThymeLeaf предназначен для использования одного и того же файла в качестве прототипа, который вы можете просмотреть в браузере, а также рабочего файла шаблона.На практике это означает, что если вы хотите, вы можете открыть файл шаблона в браузере, фактически не запуская его, и он все равно выглядит хорошо.Например, в этом коде:

<a href="/toAdd" th:href="@{/list}" class="btn btn-info">Back</a>

Если вы откроете файл непосредственно в браузере, браузер проигнорирует th:href (потому что он не знает, что с ним делать) и вместо этого будет использоватьhref="/toAdd".Однако, когда вы запускаете его через сервер шаблонов на сервере, href="/toAdd" заменяется результатом динамического выражения th:href="@{/list}".

. Это легче показать с помощью таблицы.Например:

<table>
  <tr>
    <th>NAME</th>
    <th>PRICE</th>
    <th>IN STOCK</th>
  </tr>
  <tr th:each="prod : ${prods}" th:class="${prodStat.odd}? 'odd'">
    <td th:text="${prod.name}">Onions</td>
    <td th:text="${prod.price}">2.41</td>
    <td th:text="${prod.inStock}? #{true} : #{false}">yes</td>
  </tr>
</table>

Когда вы откроете это в браузере, вы увидите таблицу с одной строкой (Лук, 2,41, да).Но когда вы запускаете его через сервер, фактическое содержимое таблицы заменяется данными, содержащимися в переменной ${prods}.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...