Maison > Java > javaDidacticiel > SpringMVC Learning Series (7) Explication détaillée de l'affichage formaté des graphiques et du texte

SpringMVC Learning Series (7) Explication détaillée de l'affichage formaté des graphiques et du texte

黄舟
Libérer: 2017-03-03 11:01:45
original
1918 Les gens l'ont consulté

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 :

SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte

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>
Copier après la connexion
    money:<br>${contentModel.money}<br>
    date:<br>${contentModel.date}<br>
Copier après la connexion
    
Copier après la connexion


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;
    }
        
}
Copier après la connexion


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";
    }
    
}
Copier après la connexion


Lancer le test :

SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte

Changez la langue de votre navigateur préférée :

SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte

Actualisez la page :

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 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";
    }
    
}
Copier après la connexion


Cette fois, il n'y a pas de Locale locale=LocaleContextHolder.getLocale(); relancez le test et changez la langue et actualisez. Vous pouvez voir le même effet que la capture d'écran du premier. méthode, indiquant que DefaultFormattingConversionService renverra automatiquement les informations correspondantes en fonction des informations demandées par le format du navigateur.

SpringMVC Learning Series (7) Explication détaillée de laffichage formaté des graphiques et du texte. Certaines personnes peuvent penser, ah... Je veux juste formater l'affichage. Pourquoi devrait-il être si difficile d'écrire du code pour convertir champ par champ ? ? ? Ne vous inquiétez pas, ce qui précède n'est qu'une démonstration du convertisseur de format intégré. Il ne sera certainement pas utilisé dans des projets réels. Voici une introduction au formatage basé sur les annotations. Tout d'abord, remplacez FormatModel.java par le contenu suivant :

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;
    }
        
}
Copier après la connexion


Remarque : L'argent et la date ici ne sont plus des types String, mais leurs types d'origine.

Modifiez FormatController.java par le contenu suivant :

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";
    }
    
}
Copier après la connexion


Remarque : Il n'y a qu'une affectation et aucun contenu de formatage dans ce code.

Modifiez le contenu de la vue formattest.jsp comme suit :

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">
Copier après la connexion
<meta><title>Insert title here</title>
    
    money:<br>
    <eval></eval><br>
    date:<br>
    <eval></eval><br>
    
Copier après la connexion


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) !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal