简体   繁体   中英

Thymeleaf th:each + spring MVC

I'm a beginner with thymeleaf and Spring MVC.

I try to make a loop with images, but I think my controller return me empty list because when I check on my page it doesn't show my html with th:each.

I make a lot of research and based my code on Spring mvc tutorial : http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

Here are my code I don't understand my mistake.. I give you all my code hoping you'll find where is my error. I think my error is in my crontroller. I thank you a lot for your help!

First my java class

public class Sponsors {

    private String image;
    private String href;
    private String name;
    private String id;

    public Sponsors(String image,String href,String name,String id) {
        this.image = image;
        this.href = href;
        this.name = name;   
        this.id = id;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getHref() {
        return href;
    }

    public void setHref(String href) {
        this.href = href;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

Here it's just a test to fill an arraylist with some Sponsors

public class GetSponsorsList {

    private List<Sponsors> listSponsors = new ArrayList<Sponsors>();

    public GetSponsorsList() {
        listSponsors.add(new Sponsors("@{/images/logo-***.jpg}","@{/recherche?res=***}","****","****"));
        listSponsors.add(new Sponsors("@{/images/logo-***.jpg}","@{/recherche}","****","****"));
        listSponsors.add(new Sponsors("@{/images/logo-***.jpg}","@{/recherche}","*****","*****"));
        listSponsors.add(new Sponsors("@{/images/logo-***.jpg}","@{/recherche}","*****","*****"));
        listSponsors.add(new Sponsors("@{/images/logo-***.jpg}","@{/recherche}","*****","*****"));
    }

    public List<Sponsors> getListSponsors() {
        return listSponsors;
    }

    public void setListSponsors(List<Sponsors> listSponsors) {
        this.listSponsors = listSponsors;
    }
}

Here is my controller

@Controller
public class HomeSponsors extends AbstractController {

    @ModelAttribute("sponsorsList")
    public List<Sponsors> sponsorsList() {
        return new GetSponsorsList().getListSponsors();
    }
}

And last this is my html

<!DOCTYPE html>
<html xmlns:layout="http://www.ultraq.net.nz/thymeleaf/layout"
      xmlns:th="http://www.thymeleaf.org">

<head>
  <meta charset="UTF-8"/>
</head>

<body>
<div class="sect sect--guide" th:fragment="sponsors-panel_2">
  <div class="container">
    <div class="row">
      <div class="col-md-3 col-sm-12 ">
        <p class="t2">...</p>
      </div>
      <div class="col-md-9 col-sm-12 ">
        <div class=" col-sm-4 col-xs-12  col-border" th:each="sponsor : ${sponsorsList}">
          <ul class="list list--guide">
            <li>
              <a th:href="${sponsor.href}" target="_blank" id="${sponsor.id}"><h3>...</h3>
                <img th:src="${sponsor.image}" style="width: 100%" alt="" id="LBP"/>
                <span>
                  <img class="arrow arrow-out" th:src="@{/images/i-arrow.svg}" alt=""/>
                  <img class="arrow arrow-over" th:src="@{/images/i-arrow-white.svg}" alt=""/>
                </span>
              </a>
            </li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</div>
</body>
</html>

Edwyn,

What I mean is something like this:

@Controller
@ControllerAdvice
public class HomeSponsors extends AbstractController {

    @RequestMapping("/sponsorsPage")
    public String sponsorsPage(Model model) {
        return "sponsorsPage";
    }

    @ModelAttribute("sponsorsList")
    public List<Sponsors> sponsorsList() {
        return new GetSponsorsList().getListSponsors();
    }

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM