Вложенный пользовательский тег Thymeleaf, не выполняющий стандартные атрибуты диалекта th:

#thymeleaf

Вопрос:

Я пытаюсь написать пользовательский тег с вложенными пользовательскими тегами. Что-то вроде

 <my:out th:if="true">
    <my:inside th:text="realtext">dummy</my:inside>
</my:out>
 

th:if Атрибут в my:out теге работает нормально, в то время
th:text как атрибут в my:inside теге игнорируется. На самом деле любой th атрибут игнорируется во внутреннем теге.

Я использую обычай AbstractElementModelProcessor , который повторяет IModel элементы.

Я предполагаю, что содержимое пользовательских тегов не обрабатывается при запуске стандартного диалекта. Как я могу это исправить?

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

1. Каковы относительные приоритеты вашего пользовательского диалекта и стандартного диалекта? Я бы ожидал, что пользовательский диалект будет иметь более высокий приоритет (чтобы он обрабатывался первым) и что он просто пройдет через атрибуты Thymeleaf , такие как th:text="realtext" , без изменений в его выводе HTML. Затем стандартный диалект должен иметь возможность работать с результатами (некоторый стандартный HTML, содержащий неизмененный th:text атрибут).

2. Я перепробовал все возможные приоритеты: ниже, то же самое и выше, чем стандартный диалект. Когда приоритет ниже (выполняется до стандарта), любое th:if игнорируется, так что ничего хорошего. Также th:текст не будет выполнен, поэтому я не смогу использовать текст вычисленного узла. Когда приоритет такой же или выше (выполняется одновременно или после стандарта), он работает только с внешним тегом, как указано.

3. Я создал небольшую демонстрацию диалекта, похожую на вашу, но использующую AbstractElementTagProcessor вместо вашей модели процессор. Я попытался использовать StandardDialect.PROCESSOR_PRECEDENCE для своего диалекта — и я также попытался с более высокими и более низкими значениями приоритета. К моему удивлению, результаты оказались такими же, как вы описываете.