In Serie (6) haben wir vorgestellt, wie man die Richtigkeit der übermittelten Daten überprüft. Wenn die Daten die Überprüfung bestehen, werden sie von uns gespeichert. Die gespeicherten Daten werden für die zukünftige Anzeige verwendet, was den Wert der Speicherung darstellt. Wie kann man es also bei der Anzeige nach Bedarf anzeigen? (Zum Beispiel: Behalten Sie eine bestimmte Anzahl von Dezimalstellen, ein Datum in einem bestimmten Format usw. bei.) Darum geht es in diesem Artikel – >Formatierte Anzeige.
Ab Spring SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte. Für die Konvertierung ist Formatter SPI eine Kapselung von Converter SPI und bietet Unterstützung für die Internationalisierung. Die interne Konvertierung wird weiterhin von Converter SPI durchgeführt.
Das Folgende ist ein einfacher Konvertierungsprozess zwischen einer Anfrage und einem Modellobjekt:
Spring stellt FormattingConversionService und DefaultFormattingConversionService bereit, um die Objektanalyse und -formatierung abzuschließen. Einige der integrierten Formatter-SPIs von Spring lauten wie folgt:
名称 | 功能 |
NumberFormatter | 实现Number与String之间的解析与格式化 |
CurrencyFormatter | 实现Number与String之间的解析与格式化(带货币符号) |
PercentFormatter | 实现Number与String之间的解析与格式化(带百分数符号) |
DateFormatter | 实现Date与String之间的解析与格式化 |
NumberFormatAnnotationFormatterFactory | @NumberFormat注解,实现Number与String之间的解析与格式化,可以通过指定style来指示要转换的格式(Style.Number/Style.Currency/Style.Percent),当然也可以指定pattern(如pattern=“#.##”(保留SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte位小数) ),这样pattern指定的格式会覆盖掉Style指定的格式 |
JodaDateTimeFormatAnnotationFormatterFactory | @DateTimeFormat注解,实现日期类型与String之间的解析与格式化这里的日期类型包括Date、Calendar、Long以及Joda的日期类型。必须在项目中添加Joda-Time包 |
Beginnen wir mit der Demonstration:
Fügen Sie hier zuerst das Joda-Time-Paket zum vorherigen Projekt hinzu. Fügen Sie eine formattest.jsp-Ansicht hinzu. Der Inhalt ist wie folgt:
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteC//DTD HTML SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte.0SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte Transitional//EN" "http://www.wSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte.org/TR/htmlSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte/loose.dtd"><meta><title>Insert title here</title>
money:<br>${contentModel.money}<br> date:<br>${contentModel.date}<br>
SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte. Zuerst verwenden wir Formatter direkt zur Demonstration und fügen es in com.demo.web ein .models-Paket Der Inhalt von FormatModel.java lautet wie folgt:
package com.demo.web.models;public class FormatModel{ private String money; private String date; public String getMoney(){ return money; } public String getDate(){ return date; } public void setMoney(String money){ this.money=money; } public void setDate(String date){ this.date=date; } }
Fügen Sie FormatController.java wie folgt zum com.demo.web.controllers-Paket hinzu:
package com.demo.web.controllers;import java.math.RoundingMode;import java.util.Date;import java.util.Locale;import org.springframework.context.iSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte8n.LocaleContextHolder;import org.springframework.format.datetime.DateFormatter;import org.springframework.format.number.CurrencyFormatter;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.FormatModel; @Controller @RequestMapping(value = "/format")public class FormatController { @RequestMapping(value="/test", method = {RequestMethod.GET}) public String test(Model model) throws NoSuchFieldException, SecurityException{ if(!model.containsAttribute("contentModel")){ FormatModel formatModel=new FormatModel(); CurrencyFormatter currencyFormatter = new CurrencyFormatter(); currencyFormatter.setFractionDigits(SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte);//保留SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte位小数 currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);//向(距离)最近的一边舍入,如果两边(的距离)是相等的则向上舍入(四舍五入) DateFormatter dateFormatter=new DateFormatter(); dateFormatter.setPattern("yyyy-MM-dd HH:mm:ss"); Locale locale=LocaleContextHolder.getLocale(); formatModel.setMoney(currencyFormatter.print(SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte5.678, locale)); formatModel.setDate(dateFormatter.print(new Date(), locale)); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
Führen Sie den Test durch:
Ändern Sie Ihre bevorzugte Browsersprache:
Aktualisieren Sie die Seite:
SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte. Verwenden Sie dieses Mal DefaultFormattingConversionService zur Demonstration und ändern Sie FormatController.java in den folgenden Inhalt:
package com.demo.web.controllers;import java.math.RoundingMode;import java.util.Date;import org.springframework.format.datetime.DateFormatter;import org.springframework.format.number.CurrencyFormatter;import org.springframework.format.support.DefaultFormattingConversionService;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.FormatModel; @Controller @RequestMapping(value = "/format")public class FormatController { @RequestMapping(value="/test", method = {RequestMethod.GET}) public String test(Model model) throws NoSuchFieldException, SecurityException{ if(!model.containsAttribute("contentModel")){ FormatModel formatModel=new FormatModel(); CurrencyFormatter currencyFormatter = new CurrencyFormatter(); currencyFormatter.setFractionDigits(SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte);//保留SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte位小数 currencyFormatter.setRoundingMode(RoundingMode.HALF_UP);//向(距离)最近的一边舍入,如果两边(的距离)是相等的则向上舍入(四舍五入) DateFormatter dateFormatter=new DateFormatter(); dateFormatter.setPattern("yyyy-MM-dd HH:mm:ss"); DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService(); conversionService.addFormatter(currencyFormatter); conversionService.addFormatter(dateFormatter); formatModel.setMoney(conversionService.convert(SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte5.678, String.class)); formatModel.setDate(conversionService.convert(new Date(), String.class)); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
Dieses Mal gibt es kein Locale=LocaleContextHolder.getLocale(); führen Sie den Test erneut aus und ändern Sie die Sprache und aktualisieren Sie ihn. Sie können den gleichen Effekt wie im Screenshot des ersten sehen Methode, die angibt, dass der DefaultFormattingConversionService automatisch die entsprechenden Informationen entsprechend dem vom Browser angeforderten Format zurückgibt.
SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte. Manche Leute denken vielleicht, ah... Ich möchte nur die Anzeige formatieren. Warum sollte es so mühsam sein, Code zu schreiben, um Feld für Feld zu konvertieren? ? ? Keine Sorge, das Obige ist nur eine Demonstration des integrierten Formatkonverters. Er wird definitiv nicht in tatsächlichen Projekten verwendet. Hier finden Sie eine Einführung in die annotationsbasierte Formatierung. Ändern Sie zunächst FormatModel.java in den folgenden Inhalt:
package com.demo.web.models;import java.util.Date;import org.springframework.format.annotation.DateTimeFormat;import org.springframework.format.annotation.NumberFormat;import org.springframework.format.annotation.NumberFormat.Style;public class FormatModel{ @NumberFormat(style=Style.CURRENCY) private double money; @DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss") private Date date; public double getMoney(){ return money; } public Date getDate(){ return date; } public void setMoney(double money){ this.money=money; } public void setDate(Date date){ this.date=date; } }
Hinweis: Geld und Datum sind hier keine String-Typen mehr, sondern ihre ursprünglichen Typen.
Ändern Sie FormatController.java in den folgenden Inhalt:
package com.demo.web.controllers;import java.util.Date;import org.springframework.stereotype.Controller;import org.springframework.ui.Model;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import com.demo.web.models.FormatModel; @Controller @RequestMapping(value = "/format")public class FormatController { @RequestMapping(value="/test", method = {RequestMethod.GET}) public String test(Model model) throws NoSuchFieldException, SecurityException{ if(!model.containsAttribute("contentModel")){ FormatModel formatModel=new FormatModel(); formatModel.setMoney(SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte5.678); formatModel.setDate(new Date()); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
Hinweis: In diesem Code gibt es nur Zuweisungen und keinen Formatierungsinhalt.
Ändern Sie den Inhalt der Ansicht formattest.jsp wie folgt:
nbsp;html PUBLIC "-//WSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteC//DTD HTML SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte.0SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte Transitional//EN" "http://www.wSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte.org/TR/htmlSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte/loose.dtd">
<meta><title>Insert title here</title> money:<br> <eval></eval><br> date:<br> <eval></eval><br>
Hinweis: Sie müssen hier eine Referenz hinzufügen@taglib prefix="spring"uri="http://www.php.cn/" %>, und verwenden Sie spring:eval, um den anzuzeigenden Wert zu binden.
Führen Sie den Test aus, ändern Sie die Browsersprache und aktualisieren Sie dann die Seite. Sie können immer noch den gleichen Effekt wie im Screenshot der ersten Methode sehen, was dies beweist Die Anmerkung ist gültig.
Damit ist die Inhaltsformatierung für die Anzeige beendet.
Hinweis: Ich habe den Beispielcode in den ersten SpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texteSpringMVC-Lernreihe (7) Detaillierte Erläuterung formatierter Anzeigegrafiken und -texte Artikeln zuvor nicht beachtet. Ich weiß nicht, warum das damals hochgeladene Paket keine .project-Projektdatei hatte. Infolgedessen konnte es nach dem Herunterladen nicht direkt in Eclipse importiert werden, um ausgeführt zu werden, und die virtuelle Maschine wurde gelöscht. Es gibt keine Sicherung dieser Beispielcodes, aber die Codedateien sind noch vorhanden, sodass Sie eine erstellen können Neues dynamisches Webprojekt erstellen und die entsprechenden Konfigurationsdateien, Controller und Ansichten importieren. Ich entschuldige mich für die Unannehmlichkeiten.
Das Obige ist die detaillierte Erklärung der formatierten Grafiken und Texte, die in der SpringMVC-Lernreihe (7) angezeigt werden. Weitere verwandte Inhalte finden Sie hier zur chinesischen PHP-Website (www.php.cn)!