2017-07-31 78 views
1

我是一个有thymeleaf和Spring MVC的初学者。Thymeleaf th:每个+ spring MVC

我试图做一个循环与图像,但我认为我的控制器返回我空列表,因为当我检查我的网页时,它不显示我的HTML与TH:每个。

我做了很多的研究,基于我对Spring MVC的教程代码:http://www.thymeleaf.org/doc/articles/springmvcaccessdata.html

这里是我的代码,我不明白我的错误。我给你我所有的代码,希望你会发现在哪里我的错误。我认为我的错误在我的控制器中。 我很感谢你的帮助!

首先我的java类

package *****; 

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; 
    } 
} 

这只是一个测试,以填补一个ArrayList与一些赞助商

package ******; 

import java.util.ArrayList; 
import java.util.List; 

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; 
    } 


} 

这里是我的控制器

package ****.search.controller; 

import java.util.List; 
import org.springframework.stereotype.Controller; 
import org.springframework.web.bind.annotation.ModelAttribute; 
import ****.commons.controller.AbstractController; 
import ****.model.GetSponsorsList; 
import ****.model.Sponsors; 

@Controller 
public class HomeSponsors extends AbstractController { 

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

} 

和最后一个,这是我的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> 
+0

哪里是你的请求映射此页面? – kimy82

+0

但我不使用th:href来打印我的选项卡。那么为什么我需要一个请求映射? –

+0

尝试在控制器类中添加@ControllerAdvice注释,并将请求映射设置在同一控制器中。模型属性仅适用于控制器内部的请求。使用controllerAdvice注释,您将可用于所有请求。希望帮助 – kimy82

回答

0

Edwyn,

我的意思是这样的:

@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(); 
    } 

} 
+0

对不起:/我会做的。 –

+1

'@ ControllerAdvice'用于完全不同的东西......不要将它添加到'@ Controller'。 –

+0

谢谢你很多kimy!它正在工作! 我不知道Deinum,但如果我不这样做,我的网站不起作用。 –

相关问题