2017-03-08 3 views
0

Ich möchte eine Karte aus einer Eigenschaftendatei mithilfe der Thymeleaf Vorlage-Engine übergeben.So übergeben Sie eine Karte in Thymoleaf (Frühling 4)

Ausnahme:

org.springframework.expression.spel.SpelEvaluationException: EL1008E: Property or field 'title' cannot be found on object of type 'java.lang.String' - maybe not public? 

provider.html:

<!DOCTYPE> 
<html th:include="receiver :: receiver(#{site})"></html> 

receiver.html:

<!DOCTYPE HTML> 
<html th:fragment="receiver(map)"> 
    <head> 
     <title th:text="${map.title}">title</title> 
    </head> 
    <body th:text="${map.body}"> 
     body 
    </body> 
</html> 

messages.properties:

site.title = Any title 
site.body = Any body 

Controller:

@Controller 
public class StartController { 

    @RequestMapping(value = "/", method = RequestMethod.GET) 
    public String start(Model model) { 
     return "provider"; 
    } 

} 

Antwort

0

Es ist einfach in Java mögen. Schlüssel und Wert der Karte

<div th:each="userEnrty: ${userMap}"> 
<p th:text="${userEntry.key}">No Id!</p> 
<p th:text="${userEntry.value}">No Name!</p> 
</div> 
+0

geklappt hat für mich nicht. Ich erhalte diese Meldung jetzt: Eigenschaft oder Feld 'Titel' kann nicht auf null zu finden I Empfänger diese bearbeitet: : Fragment = "Empfänger (Karte)" th: jeweils = "Eintrag: $ {Karte}"> title Körper –

+0

NICHT $ {entry.title}. Verwenden Sie $ {entry.key} –

+0

Map (Schlüssel, Wert) nicht Map (Titel, Körper) –

0

Also habe ich herausgefunden, dass Property-Dateien als Map verarbeitet werden. Also war "Website" überhaupt keine Karte.

Meine Lösung ist jetzt, den Namen der Variablen-prefi übergeben und die Schlüssel durch thymeleaf Vorverarbeitung erhalten.

provider.html:

<!DOCTYPE> 
<html th:include="receiver :: receiver('site')"></html> 

receiver.html:

<!DOCTYPE HTML> 
<html th:fragment="receiver(mapname)"> 
    <head> 
     <title th:text="#{__${mapname}__.title}">title</title> 
    </head> 
    <body th:text="#{__${mapname}__.body}"> 
     body 
    </body> 
</html> 

messages.properties

site.title = Any title 
site.body = Any body 
Verwandte Themen