2014-09-25 3 views
12

ठीक है, मैं स्प्रिंग और थिमलीफ के लिए गीले-पीछे-कान के नए नवागंतुक हूं। मैं कुछ इतना आसान करने की कोशिश कर रहा हूं कि यह कोई ब्रेनर नहीं होना चाहिए। लेकिन मैं इसे काम नहीं कर सकता। सरल सवाल यह है कि - आप किसी वेब पेज में तारों की सूची कैसे दिखाते हैं?स्प्रिंग, थिमलीफ और स्ट्रिंग्स की सूचियां

<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" को "आइटम" केवल क्योंकि मैं उदाहरण हैं, जहां की एक जोड़ी पाया कहा:

मैं निम्नलिखित मॉडल

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

मेरे वेब पेज निम्नलिखित शामिल है उनके पास तारों की एक सूची थी और कुछ ऐसा ही किया। लेकिन उनके पास वस्तु पर ".name" था।

लेकिन यह अभी भी काम नहीं करता है। अनियंत्रित सूची खाली हो जाती है। अर्थात। अनियंत्रित टैग के अंदर कोई सूची आइटम नहीं है।

पूर्वाह्न मैं गलत कर रहा हूँ? पॉइंटर्स खुशी से स्वीकार कर लिया।

उत्तर

19

चूंकि मॉडल भरने का कोई उदाहरण नहीं है, इसलिए मुझे लगता है कि आपने TestModel की सूची फ़ील्ड के उदाहरण में कुछ तार डाले हैं।

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

तो फिर वहाँ अपने Thymeleaf टेम्पलेट उदाहरण में अधिक त्रुटियाँ हैं।

  1. क्या आप पहली जगह उपयोग asterix * पर वस्तु गुण का उपयोग करने की चाहिए th:object के माध्यम से वस्तु चयन उपयोग कर रहे हैं। क्षैतिज वाक्यविन्यास संदर्भ चर मानचित्र के बजाय चयनित वस्तुओं पर अभिव्यक्ति का मूल्यांकन करता है।
  2. ऑब्जेक्ट चयन डोम में केवल बच्चों के नोड्स को प्रभावित करता है।
  3. अपने उदाहरण में आप तारों की सूची (List<String>) पर पुन: प्रयास करना चाहते हैं, लेकिन आप संपत्ति name तक पहुंचाना चाहते हैं जो वास्तव में जावा String ऑब्जेक्ट पर मौजूद नहीं है।

आपको अपने थाइमेलीफ टेम्पलेट को एक ही तरीके से ठीक करना होगा - उदाहरण देखें।

कोई वस्तु चयन सभी

<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

दोनों उदाहरण काम करते थे। मुझे सीधे सेट करने के लिए धन्यवाद। जैसा कि मैंने कहा - मैं * थाइमेलीफ वाक्यविन्यास के लिए * बहुत * नया हूं। मुझे अभी तक एक अच्छा ट्यूटोरियल नहीं मिला है जो वर्णन करता है कि इसका उपयोग कब किया जाए। मैंने दूसरी साइट से एक उदाहरण कॉपी किया लेकिन यह काम नहीं किया। फिर, आपकी मदद के लिए धन्यवाद। –

+1

हाय ठीक है, मुझे आशा है कि मेरा उदाहरण आपको इस समस्या से मदद करेगा। मैं आधिकारिक थाइमेलीफ दस्तावेज की सिफारिश कर सकता हूं। परीक्षाओं को पढ़ना और भरना आसान है। आधिकारिक साइट पर कुछ ट्यूटोरियल भी हैं। Http://www.thymeleaf.org/documentation.html देखें –

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> 

एक और उदाहरण मेज और वस्तु का उपयोग करने में। किसी और के लिए उपयोगी हो सकता है।

संबंधित मुद्दे