2017-07-31 79 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,但如果我不這樣做,我的網站不起作用。 –

相關問題