Dans la série (6), nous avons présenté comment vérifier l'exactitude des données soumises. Lorsque les données passent la vérification, elles seront enregistrées par nos soins. Les données enregistrées seront utilisées pour un affichage futur, ce qui correspond à la valeur de l'enregistrement. Alors comment l'afficher selon les besoins lors de l'affichage ? (Par exemple : conserver un certain nombre de chiffres décimaux, la date dans un format spécifié, etc.). C’est le sujet de cet article -> Affichage formaté.
À partir de Spring SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte. Pour la conversion, Formatter SPI est une encapsulation de Converter SPI et ajoute la prise en charge de l'internationalisation. La conversion interne est toujours effectuée par Converter SPI.
Ce qui suit est un processus de conversion simple entre les requêtes et les objets de modèle :
Spring fournit FormattingConversionService et DefaultFormattingConversionService pour terminer l'analyse et le formatage des objets. Plusieurs des SPI du formateur intégrés de Spring sont les suivants :
名称 | 功能 |
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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte位小数) ),这样pattern指定的格式会覆盖掉Style指定的格式 |
JodaDateTimeFormatAnnotationFormatterFactory | @DateTimeFormat注解,实现日期类型与String之间的解析与格式化这里的日期类型包括Date、Calendar、Long以及Joda的日期类型。必须在项目中添加Joda-Time包 |
Commençons la démonstration :
Ajoutez d'abord le package Joda-Time au projet précédent. Le joda-time-SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.jar est utilisé ici. Ajoutez une vue formattest.jsp dans le dossier vues. le contenu est le suivant :
nbsp;html PUBLIC "-//WSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteC//DTD HTML SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.0SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte Transitional//EN" "http://www.wSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.org/TR/htmlSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte/loose.dtd"><meta><title>Insert title here</title>
money:<br>${contentModel.money}<br> date:<br>${contentModel.date}<br>
SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte Tout d'abord, nous utilisons Formatter directement pour la démonstration et l'ajoutons dans le com.demo.web. Package .models Le contenu de FormatModel.java est le suivant :
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; } }
Ajoutez FormatController.java dans le package com.demo.web.controllers comme suit :
package com.demo.web.controllers;import java.math.RoundingMode;import java.util.Date;import java.util.Locale;import org.springframework.context.iSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du 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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte);//保留SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du 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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte5.678, locale)); formatModel.setDate(dateFormatter.print(new Date(), locale)); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
Lancer le test :
Changez la langue de votre navigateur préférée :
Actualisez la page :
SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte Cette fois, utilisez DefaultFormattingConversionService pour la démonstration et remplacez FormatController.java par le contenu suivant :
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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte);//保留SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du 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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte5.678, String.class)); formatModel.setDate(conversionService.convert(new Date(), String.class)); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
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; } }
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 Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte5.678); formatModel.setDate(new Date()); model.addAttribute("contentModel", formatModel); } return "formattest"; } }
nbsp;html PUBLIC "-//WSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteC//DTD HTML SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.0SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte Transitional//EN" "http://www.wSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte.org/TR/htmlSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte/loose.dtd">
<meta><title>Insert title here</title> money:<br> <eval></eval><br> date:<br> <eval></eval><br>
Remarque : Vous devez ajouter une référence iciPréfixe @taglib="printemps"uri="http://www.php.cn/" %>, et utilisez spring:eval pour lier la valeur à afficher.
Exécutez le test, changez la langue du navigateur puis actualisez la page. Vous pouvez toujours voir le même effet que la capture d'écran dans la première méthode, ce qui le prouve. l'annotation est valide.
Cela met fin au formatage du contenu pour l'affichage.
Remarque : je n'ai pas prêté attention à l'exemple de code dans les SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texteSpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte premiers articles auparavant. Je ne sais pas pourquoi le package téléchargé à ce moment-là n'avait pas de fichier de projet .project. En conséquence, après le téléchargement, il n'a pas pu être directement importé dans Eclipse pour être exécuté, et la machine virtuelle a été supprimée, et il n'y a pas de sauvegarde de ces exemples de codes, mais les fichiers de code sont toujours là, vous pouvez donc créer un nouveau projet Web dynamique et importez les fichiers de configuration, les contrôleurs et les vues correspondants. Je m'excuse pour la gêne occasionnée à tout le monde.
Ce qui précède est l'explication détaillée des graphiques et du texte formatés dans la série d'apprentissage SpringMVC (7). Pour plus de contenu connexe, veuillez prêter attention à . le site PHP chinois ( www.php.cn) !