Welcome to the Treehouse Community

Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.

Start your free trial

Java Spring Basics Modeling, Storing, and Presenting Data Create an Index Page with Thymeleaf

Challenge requiring me to enter th:each in <li> instead of <ul>

To repeat the list, I should be entering the th:each in the ul element. But its failing saying I need to enter it in the li element. For the li element to repeat, I need to code it like below. What am I doing wrong?

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="UTF-8"/>
    <meta description="viewport" content="width=device-width, initial-scale=1"/>

    <link rel="stylesheet" th:href="@{/app.css}"/>

    <title>Contact List</title>
  </head>
  <body>
    <h1>Contacts</h1>
    <ul th:each="contact : ${contacts}"> <!-- REPLACE THE LI ELEMENTS BELOW -->
      <li th:text="${contact.firstname}">

      </li>
    </ul>
  </body>
</html>
src/main/resources/templates/contact_list.html
<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="UTF-8"/>
    <meta description="viewport" content="width=device-width, initial-scale=1"/>

    <link rel="stylesheet" th:href="@{/app.css}"/>

    <title>Contact List</title>
  </head>
  <body>
    <h1>Contacts</h1>
    <ul th:each="contact : ${contacts}"> <!-- REPLACE THE LI ELEMENTS BELOW -->
      <li th:text="${contact.firstname}">

      </li>
    </ul>
  </body>
</html>

1 Answer

Daniel Vargas
Daniel Vargas
29,184 Points

Hi

If you want to generate list items you shoud put the th:each inside the <li> element, otherwise you wouldn't be filling your list but creating a new list with a single item everytime.

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
  <head>
    <meta charset="UTF-8"/>
    <meta description="viewport" content="width=device-width, initial-scale=1"/>

    <link rel="stylesheet" th:href="@{/app.css}"/>

    <title>Contact List</title>
  </head>
  <body>
    <h1>Contacts</h1>
    <ul> <!-- REPLACE THE LI ELEMENTS BELOW -->
      <li th:each="contact : ${contacts}" th:text="${contact.firstName}">name</li>

    </ul>
  </body>
</html>

Thanks. Looks like both are acceptable except the author marked your answer as the only acceptable answer. https://teamtreehouse.com/community/using-theach-on-an-unordered-list-of-list-items-ive-tried-this-a-variety-of-ways-but-i-cant-get-it-to-work