[JAVA] Créez votre propre utilitaire avec Thymeleaf avec Spring Boot

Aperçu

En utilisant YearMonth comme exemple, je vais résumer comment créer votre propre utilitaire. Enfin, rendez-le disponible dans $ {# yearmonths.format (hogeYm, 'yyyy-MM')}.

Supplément (note supplémentaire)

Étant donné que Thymeleaf n'a pas d'utilitaire pour faire fonctionner l'API de date et d'heure par défaut, YearMonth est utilisé pour l'exemple. Cependant, il semble y avoir un module supplémentaire officiel (thymeleaf-extras-java8time), et il semble préférable de l'utiliser pour l'API de date et d'heure. Thymeleaf et API de date et d'heure

supposition

Création du corps de l'utilitaire

L'implémentation était basée sur les dates de Thymeleaf.

public final class YearMonths {
    public String format(final YearMonth target, final String pattern) {
        if (target == null) {
            return null;
        }
        try {
            // org.thymeleaf.util.Utiliser Valider
            Validate.notEmpty(pattern, "Pattern cannot be null or empty");
            return target.format(DateTimeFormatter.ofPattern(pattern));
        } catch (final Exception e) {
            throw new TemplateProcessingException(
                    "Error formatting date with format pattern \"" + pattern + "\"", e);
        }
    }
}

Créez votre propre dialecte

Créer une boîte de dialogue pour gérer l'utilitaire de date et d'heure

public class YearMonthDialect implements IExpressionObjectDialect {
    //Le nom que vous souhaitez utiliser avec Thymeleaf
    private static final String YEAR_MONTH_EXPRESSION_NAME = "yearmonths";

    //Ensemble de gestion de nom
    private static final Set<String> ALL_EXPRESSION_NAMES = new HashSet<String>(){
                {add(YEAR_MONTH_EXPRESSION_NAME);}
            };

    @Override
    public IExpressionObjectFactory getExpressionObjectFactory() {
        return new IExpressionObjectFactory() {
            @Override
            public Set<String> getAllExpressionObjectNames() {
                return ALL_EXPRESSION_NAMES;
            }

            @Override
            public Object buildObject(IExpressionContext context, String expressionObjectName) {
                //Associez le nom à l'instance de votre propre utilitaire
                if(expressionObjectName.equals(YEAR_MONTH_EXPRESSION_NAME)){
                    return new YearMonths();
                }
                return null;
            }

            @Override
            public boolean isCacheable(String expressionObjectName) {
                //Mis en œuvre au besoin
                return false;
            }
        };
    }

    @Override
    public String getName() {
        return "YearMonth";
    }
}

Inscription au conteneur DI

Dialect doit être enregistré dans le conteneur DI pour être disponible dans SpringBoot. J'écrirai un exemple de création et d'enregistrement d'une configuration dédiée.

@Configuration
public class ThymeleafConfiguration {
    @Bean
    public DateTimeDialect DateTimeDialect() {
        return new DateTimeDialect();
    }
}

Modèle d'appel

Vous pourrez l'appeler comme suit.

${#yearmonths.format(hogeYm,'yyyy-MM')}

Résumé

  1. Créez un utilitaire
  2. Créez une boîte de dialogue pour gérer l'utilitaire
  3. Enregistrez Dialect dans le conteneur DI

référence

Recommended Posts

Créez votre propre utilitaire avec Thymeleaf avec Spring Boot
Comment créer votre propre contrôleur correspondant à / error avec Spring Boot
Créez une application CRUD avec Spring Boot 2 + Thymeleaf + MyBatis
Créer un micro service avec Spring Boot
Créez votre propre validateur avec Bean Validation
Implémenter CRUD avec Spring Boot + Thymeleaf + MySQL
Implémenter la fonction de pagination avec Spring Boot + Thymeleaf
Exécutez l'application WEB avec Spring Boot + Thymeleaf
Créez un site Web avec Spring Boot + Gradle (jdk1.8.x)
Créez une application de recherche simple avec Spring Boot
Ajoutez vos propres éléments d'authentification avec Spring Security
Créer un environnement Spring Boot avec Windows + VS Code
Créer un serveur API Web avec Spring Boot
Télécharger avec Spring Boot
Créer un environnement de développement Spring Boot avec docker
Créez un serveur Spring Cloud Config en toute sécurité avec Spring Boot 2.0
Créer Restapi avec Spring Boot (jusqu'à l'exécution de l'application)
Créez un site de démonstration simple avec Spring Security avec Spring Boot 2.1
Appelez votre propre méthode avec PreAuthorize dans Spring Security
Générer un code à barres avec Spring Boot
Hello World avec Spring Boot
Démarrez avec Spring Boot
Bonjour tout le monde avec Spring Boot!
Exécutez LIFF avec Spring Boot
Connexion SNS avec Spring Boot
[Java] Thymeleaf Basic (Spring Boot)
Créez vos propres annotations Java
Spring Boot à partir de Docker
Hello World avec Spring Boot
Définir des cookies avec Spring Boot
Utiliser Spring JDBC avec Spring Boot
Ajouter un module avec Spring Boot
Premiers pas avec Spring Boot
Envoyer du courrier avec Spring Boot
Gérez l'API de date et d'heure Java 8 avec Thymeleaf avec Spring Boot
Jusqu'à INSERT et SELECT sur Postgres avec botte de printemps et feuille de thym
Utilisez thymeleaf3 avec le parent sans spécifier spring-boot-starter-parent dans Spring Boot
Utiliser l'authentification de base avec Spring Boot
Créez votre propre échantillonneur avec JMeter
gRPC sur Spring Boot avec grpc-spring-boot-starter
Déploiement à chaud avec le développement Spring Boot
Créez votre propre requête de fonction Solr
Programmation Spring Boot avec VS Code
Jusqu'à "Hello World" avec Spring Boot
Créer une application d'enquête avec Spring Boot
Obtenez des résultats de validation avec Spring Boot
(Intellij) Hello World avec Spring Boot
Google Cloud Platform avec Spring Boot 2.0.0
J'ai essayé GraphQL avec Spring Boot
[Java] Intégration LINE avec Spring Boot
Créez votre propre encodage pour String.getBytes ()
À partir de Spring Boot 0. Utilisez Spring CLI
J'ai essayé Flyway avec Spring Boot
Certification / autorisation avec Spring Security & Thymeleaf
Comment utiliser Thymeleaf avec Spring Boot
La coopération des messages a commencé avec Spring Boot
Traitement lors du démarrage d'une application avec Spring Boot
Comment appliquer immédiatement les modifications de Thymeleaf au navigateur avec #Spring Boot + maven
Création d'un environnement de développement Spring Boot dans Vagrant