थाइमेलेफ़: कॉनटेनटेशन - अभिव्यक्ति के रूप में पार्स नहीं कर सकता


83

जब मैं अपने टेम्पलेट में कई मानों को समाप्‍त करने की कोशिश कर रहा हूं तो मुझे एक समस्‍या हो रही है। Thymeleaf के अनुसार यहां मुझे बस उन्हें एक साथ + करने में सक्षम होना चाहिए ...

4.6 कॉन्सेप्टिंग टेक्‍सट

ग्रंथ, कोई फर्क नहीं पड़ता कि वे शाब्दिक हैं या चर या संदेश के भावों के मूल्यांकन का परिणाम, + का उपयोग करके आसानी से समाप्‍त किया जा सकता है:

th:text="'The name of the user is ' + ${user.name}"

यहाँ एक उदाहरण है कि मुझे क्या मिला:

<p th:text="${bean.field} + '!'">Static content</p>

हालांकि यह नहीं है:

<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>

तार्किक रूप से, यह काम करना चाहिए लेकिन इसकी नहीं, मैं क्या गलत कर रहा हूं?


Maven:

<dependency>
    <groupId>org.thymeleaf</groupId>
    <artifactId>thymeleaf-spring3</artifactId>
    <version>2.0.16</version>
    <scope>compile</scope>
</dependency>

यहां बताया गया है कि मैंने अपना खाका कैसे बनाया है:

<!-- Spring config -->
<bean id="templateResolver" class="org.thymeleaf.templateresolver.ClassLoaderTemplateResolver">
    <property name="suffix" value=".html"/>
    <property name="templateMode" value="HTML5"/>
    <property name="characterEncoding" value="UTF-8"/>
    <property name="order" value="1"/>
</bean>
<bean id="templateEngine" class="org.thymeleaf.spring3.SpringTemplateEngine">
    <property name="templateResolver" ref="fileTemplateResolver"/>
    <property name="templateResolvers">
        <list>
            <ref bean="templateResolver"/>
        </list>
    </property>

ThymeleafTemplatingService:

@Autowired private TemplateEngine templateEngine;
.....
String responseText = this.templateEngine.process(templateBean.getTemplateName(), templateBean.getContext());

AbstractTemplate.java:

public abstract class AbstractTemplate {
  private final String templateName;
  public AbstractTemplate(String templateName){
    this.templateName=templateName;
  }
  public String getTemplateName() {
    return templateName;
  }
  protected abstract HashMap<String, ?> getVariables();
  public Context getContext(){
    Context context = new Context();
    for(Entry<String, ?> entry : getVariables().entrySet()){
      context.setVariable(entry.getKey(), entry.getValue());
    }
    return context;
  }
}

मुझे एक ही त्रुटि हुई है !!!!!!!!!! लेकिन मैं thymeleaf और scala का उपयोग करता हूं

एकमात्र तरीका है कि मैं इसे काम करने में कामयाब रहा हूं, पूर्व-प्रसंस्करण का उपयोग करना है। <p th:text="${'__${bean.property1}__' + '::' + '__${bean.property2}__'}">default text</p>
नील

यह उदाहरण मेरे लिए काम करता है। आप किस संस्करण का उपयोग कर रहे हैं? क्या आप किसी भी अतिरिक्त बोलियों का उपयोग कर रहे हैं?
हबर्ड्र

जवाबों:


202

लेकिन जो मैं आपको देखता हूं उससे आपको सिंटैक्स में काफी सरल त्रुटि होती है

<p th:text="${bean.field} + '!' + ${bean.field}">Static content</p>

सही सिंटैक्स जैसा दिखेगा

<p th:text="${bean.field + '!' + bean.field}">Static content</p>

तथ्य के रूप में, वाक्यविन्यास th:text="'static part' + ${bean.field}"के बराबर है th:text="${'static part' + bean.field}"

कोशिश करके देखो। हालांकि यह 6 महीने के बाद अब शायद बेकार है।


धन्यवाद, मेरे लिए मददगार।
asifaftab87

23
6 महीने के बाद बेकार।, यह अभी भी 6 साल बाद उपयोगी है
अगुथडे

32

आप ||वर्णों के बीच अपनी सरल / जटिल अभिव्यक्ति को व्यंग करके कई तरह की अभिव्यक्ति कर सकते हैं :

<p th:text="|${bean.field} ! ${bean.field}|">Static content</p>

मैं Thymeleaf संस्करण का उपयोग कर रहा हूं: 2.1.1। कृपया (यह अंतिम संस्करण होना चाहिए)
फर्नांडो एस्पियाजु

संस्करण पर महान काम करता है2.1.5
थियागो परेरा

1
यदि पाठ में क्या है | उदाहरण के लिए। "|${fullName} Stories \| Twiza|"मैं अभिव्यक्ति के रूप में पार्स नहीं कर पा रहा हूं।
पीयूष

यह कैसे करना है यहाँ यह काम नहीं किया आप इसे आप वाक्यविन्यास में बदल सकते हैं ... th:class="'hotel listing col organic urgencyMsg available organic h-' + ${record.hotelInfo.hotelId} + '-organic'"> का उपयोग कर रहा हूँ3.0.2
shareef

1
पाठ में ऊर्ध्वाधर बार (|) का उपयोग करने के लिए:<p>[[${fullName}]] Stories | Twiza </p>
रंजन

4

ध्यान दें कि | char, आप अपने IDE के साथ चेतावनी प्राप्त कर सकते हैं, छूट के लिए मुझे IntelliJ के अंतिम संस्करण के साथ चेतावनी मिलती है, इसलिए इस वाक्यविन्यास का उपयोग करने का सबसे अच्छा समाधान है:

th:text="${'static_content - ' + you_variable}"

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.