Einführung in Thymeleaf
Einfach ausgedrückt ist Thymeleaf eine Template -Engine ähnlich wie Geschwindigkeit und Freimaurer, die JSP vollständig ersetzen kann. Im Vergleich zu anderen Vorlagenmotoren verfügt es über die folgenden drei äußerst attraktiven Funktionen:
1.Thymeleaf kann in einer Umgebung mit oder ohne Netzwerk ausgeführt werden, dh es ermöglicht Künstlern, die statischen Effekte von Seiten im Browser anzuzeigen, und es können Programmierer auch die dynamischen Seiteneffekte mit Daten auf dem Server anzeigen. Dies liegt daran, dass es HTML -Prototypen unterstützt und dann dem HTML -Tag zusätzliche Attribute hinzugefügt wird, um die Anzeigemethode von Vorlagen + Daten zu erreichen. Wenn der Browser HTML interpretiert, werden undefinierte Tag -Attribute ignoriert, sodass die Template von Thymeleaf statisch ausgeführt werden kann. Wenn Daten auf die Seite zurückgegeben werden, ersetzt das Thymeleaf -Tag den statischen Inhalt dynamisch, sodass die Seite dynamisch angezeigt wird.
2. Thymeleaf ist aus der Schachtel. Es bietet zwei Dialekte: Standard- und Federstandard. Sie können Vorlagen direkt anwenden, um JSTL- und OGNL -Expressionseffekte zu erzielen und die Mühe zu vermeiden, täglich Vorlagen, JSTL und Änderungen von Tags zu verändern. Gleichzeitig können Entwickler auch benutzerdefinierte Dialekte erweitern und erstellen.
3.ThyMeleaf bietet Spring Standard Dialekt und ein optionales Modul, das perfekt in SpringMVC integriert ist, das schnell Formbindung, Attributeditor, Internationalisierung und andere Funktionen implementieren kann.
Formularmethode hochladen:
// html: <Formular engType = "MultiPart/Form-Data" methode = "post" action = "/sell/imageUpload"> <div> <button type = "button" data-dismiss = "modal" Aria-hidden = "true"> </button> <h4 id = "mymodallabel"> stellvertretung. id = "edit_name" value = "$ {goods.name}" name = "name"/> </div> <div> <label> Code: </label> <input id = "edit_sn" name = "sn" value = "$ {goods.sn}"/> </> <div> <div> id: </label> </goods id = "name" name "name" /> </div> <div> <label> marktprice: </label> <input id = "edit_marketprice" name = "marktprice" value = "$ {goods.marketprice}"/> </div> <div> <div> <label> Shopprice: </label> <input <label>unit:</label> <input id="edit_unit" name="unit" value="${goods.unit}" /> </div><div> <label>number:</label> <input id="edit_number" name="number" value="${goods.number}" /> </div><div> <!--<form enctype="multipart/form-data" method="post" action = "/sell/imageUpload"> <input ype = "Hidden" id = "edit_goods_sn" name = "sn" value = "$ {goods.sn}"/>-> Image <input type = "file" id = "bearbeiten" name "name". type = "button" data-dismiss = "modal"> schließen </button> <Eingabe type = "surenden" id = "edit_save" value = "enden"> Änderungen senden </input> </div> </form> // Controller @RequestMapPing (value = "/saveParam, valuegoodSpage (value) (value) (value) (value) (value) (value) (value) (value) (@requestparam) (@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@| = "Name", erforderlich = false) String -Name,@requestparam (value = "sn", fordert = false) String sn, @RequestParam (value = "number", fordert = false) String -Nummer,@RequestParam (value = "Gewicht", benötigt = false) Stringgewicht, @RequestParam (value = "marktprice", verlangtes. @RequestParam(value = "unit",required=false) String unit, @RequestParam(value = "detail",required=false) String detail,@RequestParam (value="file")MultipartFile file ) { if (!file.isEmpty()) { try { BufferedOutputStream out = new BufferedOutputStream( new FileOutputStream(new Datei ("src/main/ressourcen/static/bilder/produkt/" + sn + ".jpg"))); // Speichern Sie das Bild im Verzeichnis out.write (File.getBytes ()); out.flush (); out.close (); String -Dateiname = "/// Images /// Produkt ///" + sn + ".jpg"; /*user.settupian(FileName); //userRepository.save(User);//add user*/} catch (FilenotFoundException e) {e.printstacktrace (); Rückgabe "Upload -Fehler", + e.getMessage (); } catch (ioException e) {e.printstacktrace (); Rückgabe "Upload -Fehler" + e.getMessage (); }} //...Other Operations}Ergänzung: Gibt es einen Unterschied zwischen variablen und sternigen Ausdrücken?
Es gibt keinen Unterschied zwischen den beiden, ohne den Kontext zu berücksichtigen. Die Asterisk -Syntaxbewertung wird auf dem ausgewählten Objekt ausgedrückt, nicht im gesamten Kontext Was ist das ausgewählte Objekt? Es ist der Wert des übergeordneten Tags wie folgt:
<div th: object = "$ {session.user}"> <p> Name: <span th: text = "*{ersterName}"> Sebastian </span>. TH: text = "*{Nationalität}"> Saturn </span>. </p> </div>Dies entspricht genau:
<div th: object = "$ {session.user}"> <p> Name: <span th: text = "$ {seser.user.firstname}"> Sebastian </span>. th: text = "$ {session.user.nationality}"> saturn </span>. </p> </div>Natürlich kann das Dollar -Zeichen und die Sternchensyntax gemischt werden:
<div th: Object = "$ {session.user}"> <p> Name: <span th: text = "*{FirstName}"> Sebastian </span>. TH: text = "*{Nationalität}"> Saturn </span>. </p> </div>Zusammenfassen
Das obige sind die Betriebsschritte zum Hochladen des Federschuh -Thymeleaf -Bildes auf Sie. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!