2017-01-10 5 views
0

foo.messageData - это список. messageData содержит name в виде строки.

В thymeleaf шаблоне HTML, я хочу, чтобы напечатать значение name имущества первого элемента messageData

Что-то вроде foo.messageData[0].name

<span th:text="foo.messageData[0].name"></span> и <span th:text="foo.messageData.get(0).name"></span> не работает.Thymeleaf: Как получить первый элемент списка без итерации?

Как напечатать эти данные? Есть ли какой-то особый синтаксис для этого в Тимелеафе?

Я знаю, что это значение может быть напечатано путем итерации с использованием th:each - но я не хочу этих итераций.

+0

Почему бы вам не поместить первый элемент в модель в отдельный атрибут внутри вашего контроллера Spring, я также думаю, что это упростит чтение пользовательского интерфейса (если вам не нужен первый элемент из множества разных коллекций) –

ответ

2

Тимелеановые выражения - SpEL. В вашем случае вы можете использовать его, как показано ниже.

<span th:text="${foo.messageData[0].name}"></span> 
+0

Этот синтаксис похоже, не работает. Отображение ошибки синтаксического анализа шаблона. –

+0

Работаю отлично. Не могли бы вы проверить данные об ошибке. – abaghel

0

Thymeleaf интеграция с Spring использует Spring Expression Language (SPEL).

Это означает, что все выражения ${..} будут оцениваться двигателем SpEL. Вы можете найти все сведения о доступе к элементам списка here.

Следовательно, это (обратите внимание на ${..}):

<span th:text="${foo.messageData[0]}"></span> 

напечатает первый элемент в списке foo.messageData.

foo.messageData Если содержит строковые элементы это:

<span th:text="${foo.messageData[0].name}"></span> 

не будет печатать ничего, потому что String -s не имеет свойства имени.

foo.messageData Если содержит экземпляры классов, как Inventor из документации, что я связан выше, то

<span th:text="${foo.messageData[0].name}"></span> 

напечатает имя изобретателя.

+0

По-видимому, у меня была синтаксическая ошибка, и я использовал «$ {..}», но мне не хватало последнего « В любом случае, спасибо за помощь! :-) Мне кажется, что я должен удалить вопрос. –

+0

Возможно, это действительно хороший кандидат на удаление :-) –