й: в чем разница между двумя примерами

#thymeleaf

#thymeleaf

Вопрос:

 <p th:with="firstName1='James1'">
        <p>Upper</p><p th:text="${firstName1}"></p>
</p>

<p th:with="df='today'">
        Today is: <span th:text="${df}">13 February 2011</span>
  

введите описание изображения здесь

Не могли бы вы сказать мне, в чем разница между двумя разделами кода. Для меня они кажутся идентичными. Но есть некоторая разница, поскольку результаты отличаются.

Ответ №1:

Хорошо, я никогда не сталкивался с этим раньше… но похоже, что Thymeleaf применяет правило, согласно которому Any <p> (or other block-level element) will implicitly close any open <p>. это работает, например:

 <div th:with="firstName1='James1'">
  <p>Upper</p>
  <p th:text="${firstName1}"></p>
</div>

<p th:with="df='today'">
  Today is: <span th:text="${df}">13 February 2011</span>
</p>
  

В вашем примере firstName1 переменная находится вне области видимости, потому что анализатор обрабатывает ваш HTML таким образом (так firstName1 считается null ):

 <p th:with="firstName1='James1'"></p>
<p>Upper</p>
<p th:text="${firstName1}"></p>
  

Комментарии:

1. Ну, я так не думаю. Например, это не woking: <p th:with=»firstName1=’James1′»> <p>Upper</p> <p th:text=»${firstName1}»></p> </p> Это ваш пример, но с p. Проблема, похоже, связана с блоками внутри встроенных тегов.

2. Я только что сказал, что если вы используете a <p> внутри a <p> , это не сработает, lol. Вы только что сделали то же самое снова. Если у вас есть a <p> внутри a <p> , это не сработает. Если вы используете a <div> или a <th:block> в качестве контейнера, это будет работать.