2014-09-25 28 views
12

好吧,我是一個溼背後的春天和thymleaf耳朵新人。我試圖做一些如此簡單的事情,應該是一件容易的事情。但我無法讓它工作。簡單的問題是 - 如何在網頁中顯示字符串列表?春天,thymleaf和字符串列表

我有以下型號

import java.util.List; 
public class TestModel { 

    private List<String> list = null; 
    private String content; 

    public String getContent() { 
     return content; 
    } 

    public void setContent(String content) { 
     this.content = content; 
    } 

    public List<String> getList() { return list; } 

    public void setList(final List<String> list) { 
     this.list = list; 
    } 
} 

我的網頁包含以下內容:

<div th:if="${greeting.list != null}"> 
    <h1>Result</h1> 
    <ul> 
    <th:block th:object="${greeting}" th:each="item : ${list}"> 
    <li th:text="${item.name}">Item description here...</li> 
    </th:block> 
    </ul> 
</div> 

我添加了「名稱」到‘項目’不僅是因爲我發現一對夫婦的例子,其中他們有一個字符串列表,並做了類似的事情。但是他們在對象上有「.name」。

但它仍然不起作用。無序列表結束爲空。即無序標籤內沒有任何列表項。

什麼am我做錯了嗎?指針欣然接受。

回答

19

由於沒有填充模型的例子,我假設你把一些字符串放入TestModel的列表字段的例子中。

TestModel greeting= new TestModel(); 
List<String> list = new ArrayList<>(); 
list.add("A"); 
list.add("B"); 
model.addAttribute("greeting", greeting); 

然後在您的Thymeleaf模板示例中存在更多錯誤。

  1. 如果您正在使用通過th:object對象選擇,你必須首先用星號*訪問對象的屬性。 Asterisk語法評估所選對象上的表達式而不是上下文變量映射。
  2. 對象選擇隻影響DOM中的子節點。
  3. 在你的例子中,你想遍歷字符串列表(List<String>),但是你想訪問屬性name這實際上並不存在於Java String對象上。

您必須以一種方式修復您的Thymeleaf模板 - 請參閱示例。

否對象選擇在使用表和對象所有

<div th:if="${greeting.list != null}"> 
    <h1>Result</h1> 
    <ul> 
     <li th:each="item : ${greeting.list}" th:text="${item}">Item description here...</li> 
    </ul> 
</div> 

正確對象選擇

<div th:if="${greeting.list != null}"> 
    <h1>Result</h1> 
    <ul> 
    <th:block th:object="${greeting}"> 
     <li th:each="item : *{list}" th:text="${item}">Item description here...</li> 
    </th:block> 
    </ul> 
</div> 
+0

這兩個例子都有效。謝謝你讓我直截了當。 正如我所說 - 我*非常*新穎的thymeleaf語法。我還沒有找到一個很好的教程,描述何時使用什麼。我從另一個網站複製了一個例子,但它不起作用。 再次感謝您的幫助。 – 2014-09-26 14:53:14

+1

您好,我希望我的例子能幫助您解決這個問題。我可以推薦官方的Thymeleaf文檔。閱讀和閱讀考試很容易。官方網站上還有一些教程。檢查http://www.thymeleaf.org/documentation.html – 2014-09-26 15:01:03

1
<table th:object="${userList}" id="userTable" border="1"> 
    <tr th:each="user :${userList}"> 
     <td th:text="${user.getName()}"></td> 
     <td th:text="${user.getEmail()}"></td> 
    </tr> 
</table> 

又如。可能對其他人有用。