Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

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

J Tan
J Tan
11,847 Points

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>
J Tan
J Tan
11,847 Points

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