#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
для своего диалекта — и я также попытался с более высокими и более низкими значениями приоритета. К моему удивлению, результаты оказались такими же, как вы описываете.