Passer au contenu principal

Mise à niveau vers 26.00

Ouvrir dans ChatGPT

Cette documentation sert de guide pour mettre à niveau les applications webforJ de la version 25.00 à 26.00. Voici les modifications nécessaires pour que les applications existantes continuent à fonctionner sans problème. Comme toujours, consultez l'aperçu des versions sur GitHub pour une liste plus complète des changements entre les versions.

Mise à niveau automatisée disponible
Les recettes OpenRewrite sont disponibles pour cette version afin de mettre à jour automatiquement les API obsolètes et supprimées. Consultez Utiliser OpenRewrite pour les instructions de configuration.

Modifications du fichier POM​

Java 21 et 25​

webforJ 25.12 est la dernière version qui fonctionne avec Java 17. À partir de webforJ 26.00, vous avez besoin d'une version de Java qui est soit Java 21, soit Java 25, selon votre configuration.

Installez la version Java requise comme indiqué dans les prérequis, puis mettez à jour votre fichier pom.xml :

<properties>
....
<maven.compiler.target>21</maven.compiler.target>
<maven.compiler.source>21</maven.compiler.source>
</properties>

URL du dépôt Maven​

L'emplacement où les artefacts instantanés sont hébergés a changé. Dans le fichier pom.xml de votre projet, avez-vous téléchargé vos dépendances depuis le Central Portal ?

Avant :

<repositories>
<repository>
<id>snapshots-repo</id>
<url>https://s01.oss.sonatype.org/content/repositories/snapshots</url>
....
</repository>
</repositories>

Après :

<repositories>
<repository>
<name>Central Portal Snapshots</name>
<id>central-portal-snapshots</id>
<url>https://central.sonatype.com/repository/maven-snapshots/</url>
....
</repository>
</repositories>

Mise à niveau de Spring Boot​

webforJ 25.12 est la dernière version qui utilise Spring Boot 3.x. À partir de webforJ 26.00, votre projet doit utiliser Spring Boot 4.x.

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.5</version>
</parent>
Suppression des substitutions pour la version Tomcat

Avec Spring Boot 4.x, Tomcat 11.x est maintenant inclus comme dépendance, vous pouvez donc supprimer toute substitution spécifique au projet pour la version de Tomcat.

Modifications de l'API Table​

Constructeurs basés sur des chaînes IconRenderer​

Les constructeurs basés sur des chaînes suivants sont supprimés dans 26.00 ; utilisez les constructeurs basés sur IconDefinition à la place :

v25v26
IconRenderer(String name, String pool, EventListener)IconRenderer(IconDefinition, EventListener)
IconRenderer(String name, String pool)IconRenderer(IconDefinition)
IconRenderer(String name, EventListener)IconRenderer(IconDefinition, EventListener)
IconRenderer(String name)IconRenderer(IconDefinition)

Méthodes de sélection obsolètes​

À partir de webforJ 26.00, au lieu de sélectionner des éléments dans une Table en fonction des indices, sélectionnez des éléments dans une Table en utilisant la clé de l'élément. Vous pouvez utiliser la méthode setKeyProvider() pour fournir des clés personnalisées pour les éléments de la table.

v25v26
selectIndex(int...)select(items) ou selectKey(keys)
deselectIndex(int...)deselect(items), deselectKey(keys) ou deselectAll()
getSelectedIndex()getSelected() ou getSelectedItem()
getSelectedIndices()getSelectedItems()

Événements de sélection​

Pour renforcer davantage le changement dans la façon de sélectionner des éléments dans une Table, TableItemSelectionChange n'implémente plus SelectEvent.

v25v26
event.getSelectedIndex()event.getSelectedItem()
event.getSelectedIndices()event.getSelectedItems()

Options de démarrage Webswing non prises en charge​

Les méthodes WebswingOptions suivantes sont obsolètes et ont été supprimées dans 26.00 car elles ne sont plus prises en charge par l'API Webswing.

  • getAutoReconnect() / setAutoReconnect(Integer)
  • isDisableLogout() / setDisableLogout(boolean)
  • isDisableLogin() / setDisableLogin(boolean)
  • isSyncClipboard() / setSyncClipboard(boolean)
  • getJavaCallTimeout() / setJavaCallTimeout(int)
  • getPingParams() / setPingParams(PingParams)

La classe PingParams est également obsolète. Ceux qui utilisaient ces méthodes ou la classe PingParams devraient plutôt utiliser la console d'administration Webswing pour configurer directement les options.

Filtres pour Repository​

Les interfaces RetrievalCriteria et RetrievalBuilder sont supprimées dans webforJ 26.00. Au lieu d'utiliser l'interface générique Repository, utilisez soit RepositoryCriteria<T, F>, soit CollectionRepository pour des filtres simples, ou QueryableRepository pour des types de filtrage, de tri et de pagination plus avancés.

Avant :

private String searchTerm = "";

Repository<CustomerRecord> repository = new Repository<>();

repository.setFilter((CustomerRecord r) -> {
String title = r.getTitle();
return title.toLowerCase().contains(this.searchTerm);
});

Après :

private String searchTerm = "";

CollectionRepository<CustomerRecord> repository = new CollectionRepository<>();

repository.setBaseFilter((CustomerRecord r) -> {
String title = r.getTitle();
return title.toLowerCase().contains(this.searchTerm);
});

Méthodes de dépôt obsolètes​

Utilisez le tableau suivant pour voir les méthodes de dépôt obsolètes et les méthodes à utiliser à l'avenir.

v25v26
setFilter(...)setBaseFilter(...)
getFilter()getBaseFilter()
getOrderBy()getOrderCriteriaList()
setOrderBy(Comparator<T>)getOrderCriteriaList().add(new OrderCriteria<>(keyExtractor, direction))
findOneBy(...)findBy(...) puis .findFirst()
findBy(RetrievalCriteria<T>)findBy(RepositoryCriteria<T, F>)
size(RetrievalCriteria<T>)size(RepositoryCriteria<T, F>)
getIndex(T)find(key) ou findBy(criteria)
findByIndex(int)find(key) ou findBy(criteria)

Suppression de WebforjBBjBridge​

À partir de webforJ 25.11, WebforjBBjBridge et toutes ses API ont été supprimés. Au lieu d'accéder au pont, webforJ utilise désormais l'API Java directe pour communiquer avec et accéder à toutes les API BBj requises.

Modifications du système de conception (DWC 26)​

webforJ 26.00 est livré avec la version 26 du système de conception DWC. La mise à jour est incrémentielle plutôt que complète : la plupart des variables CSS v25 restent disponibles, l'API de token public est préservée, et les personnalisations existantes continuent de fonctionner sans modifications.

Cette section répertorie les changements majeurs sur lesquels vous devrez peut-être agir. Pour un aperçu conceptuel, y compris à quoi ressemble le nouveau moteur de couleur, comment --dwc-dark-mode se propage, pourquoi les ondulations ont été supprimées, et la mécanique par zone, consultez le système de design DWC 26.

Verdict rapide​

ScénarioÀ quoi s'attendre
Utilise le style par défautRafraîchissement visuel. Les teintes de la palette par défaut ont été ajustées (primaire passé de h: 211 / s: 100% à h: 223 / s: 91%), les ombres semblent plus superposées, et les composants paraissent plus arrondis. Aucun changement de code nécessaire.
Modifie --dwc-color-{name}-h et -sFonctionne toujours. Le chemin de graine HSL est préservé.
Modifie les étapes de palette individuelles (par exemple --dwc-color-primary-40)Les numéros d'étape peuvent se traduire par différentes couleurs. Consultez la mécanique de la palette de couleurs.
Dépend de --dwc-color-{name}-cSupprimez. Le changement de texte clair/sombre est maintenant calculé automatiquement par nuance.
Fait référence à des tokens de taille de police nommés (--dwc-font-size-m, -l, etc.)L'échelle a été réduite d'un niveau. m est maintenant 14px au lieu de 16px. Consultez Typographie.
Utilise --dwc-font-weight-semibold pour obtenir un poids de 500semibold est maintenant 600. Passez au nouveau --dwc-font-weight-medium pour 500.
Réserve de l'espace autour des éléments focalisables avec --dwc-focus-ring-widthL'anneau a maintenant un écart. Ajoutez --dwc-focus-ring-gap. Consultez Anneau de focus.
Effets de survol d'un bouton personnalisé / ondulationsLes ondulations sont parties. Le retour d'information correspond désormais à une petite réduction d'échelle.

--dwc-color-{name}-c est supprimé​

Si vous avez des modifications --dwc-color-{name}-c, vous pouvez les supprimer, elles n'ont aucun effet. Le changement de texte clair/sombre est maintenant calculé automatiquement par nuance.

La sémantique de --dwc-color-{name}-alt a changé​

Tokenv25v26
--dwc-color-{name}-altÉtape de palette 95 (fond presque blanc)Graine à 12% d'opacité (teinte translucide)

Si vous avez utilisé -alt comme un fond presque blanc solide, il s'affichera désormais comme un superposé teinté translucide. Choisissez une étape spécifique (--dwc-color-{name}-95) ou concevez autour de la sémantique translucide.

La sémantique de --dwc-border-color-{name} a changé​

Tokenv25v26
--dwc-border-color-{name}Défini par variation comme var(--dwc-color-{name}) (la nuance saturée)Calculé dans le générateur : ton éclairci conscient du mode à partir de la graine

Si votre CSS lit --dwc-border-color-primary en espérant la couleur primaire saturée, le visuel est maintenant un ton de séparation subtil. Si vous voulez spécifiquement le look saturé, passez directement à --dwc-color-primary.

Le format de --dwc-shadow-color a changé​

v25v26
--dwc-shadow-colorTriplet HSL (h, s%, l%)Couleur OKLCH complète

Si votre CSS utilise la forme de triplet héritée comme hsla(var(--dwc-shadow-color), 0.07), passez à un token d'ombre complète (var(--dwc-shadow-m)) ou réécrivez avec oklch(from var(--dwc-shadow-color) l c h / 0.07).

Typographie​

L'échelle de police a été ajustée afin que les noms de niveaux aient été déplacés d'un niveau :

Tokenv25v26
--dwc-font-size-3xs10px10px
--dwc-font-size-2xs12px11px
--dwc-font-size-xs13px12px
--dwc-font-size-s14px13px
--dwc-font-size-m16px14px
--dwc-font-size-l18px16px
--dwc-font-size-xl22px20px
--dwc-font-size-2xl28px26px
--dwc-font-size-3xl36px34px

La valeur par défaut de --dwc-font-size reste 14px, elle y arrive simplement via --dwc-font-size-m (v26) plutôt que --dwc-font-size-s (v25). Si votre CSS fait référence aux tokens de taille de police par nom (par exemple, font-size: var(--dwc-font-size-l)), le résultat visible sera plus petit en v26. Augmentez d'un niveau pour préserver la taille v25.

Les poids de police ont gagné trois tokens (thin, medium, black) et un token existant a été déplacé :

Tokenv25v26
--dwc-font-weight-semibold500600
--dwc-font-weight-medium(n'existait pas)500

Si vous avez utilisé --dwc-font-weight-semibold pour obtenir un texte de poids 500, passez à --dwc-font-weight-medium.

Rayon de bordure​

v25v26
Unitéem (s'échelonne en fonction de la taille de police parente)rem (s'échelonne en fonction de la taille de police racine)
--dwc-border-radius par défaut--dwc-border-radius-s (4px)--dwc-border-radius-seed (8px)
Étapes disponiblesjusqu'à 2xlajoute 3xl, 4xl

Les composants semblent plus arrondis dès le départ. Si un composant imbriqué à l'intérieur d'un texte plus grand héritait d'un plus grand rayon via em, cette mise à l'échelle ne se produit plus ; les rayons sont désormais ancrés à la racine. Si vous souhaitez revenir à la taille par défaut v25, divisez la graine par deux :

:root {
--dwc-border-radius-seed: 0.25rem; /* 4px, divise toute l'échelle par deux */
}

Anneau de focus​

L'anneau de focus utilise désormais un motif à double anneau : un petit espace coloré de surface, puis l'anneau coloré.

Variablev25v26
--dwc-focus-ring-width3px2px
--dwc-focus-ring-a0.40.75
--dwc-focus-ring-gap(aucun)2px
--dwc-focus-ring-l45%(supprimé, la luminosité est calculée par mode)

Si vous réservez de l'espace autour des éléments focalisables avec padding: var(--dwc-focus-ring-width), ajoutez l'écart à ce rembourrage afin que le nouvel anneau ait de la place pour s'afficher :

/* v25 */
dwc-button { padding: var(--dwc-focus-ring-width); }

/* v26 */
dwc-button {
padding: calc(var(--dwc-focus-ring-width) + var(--dwc-focus-ring-gap));
}

Ondulations supprimées​

Les effets d'ondulation de style matériel ne sont plus utilisés par aucun composant DWC. Le nouveau retour d'information pour tout élément cliquable est une petite réduction d'échelle :

--dwc-scale-press: 0.97; /* Réduction standard de 3% */
--dwc-scale-press-deep: 0.93; /* Réduction plus profonde de 7% pour les boutons */

Le mixin SCSS ripple et la variable CSS --dwc-ripple-color existent toujours dans la construction, mais rien ne les importe par défaut. Si vos propres composants opting pour le mixin, passez aux tokens de pression à échelle pour correspondre à la nouvelle sensation.

Durées de transition réajustées​

Variablev25v26
--dwc-transition-slow500ms300ms
--dwc-transition-medium250ms250ms
--dwc-transition-fast150ms150ms
--dwc-transition-x-fast50ms100ms

Si vous dépendez d'une durée spécifique, remplacez-la dans :root.

Liste de contrôle de mise à niveau pragmatique​

  1. Recherchez --dwc-color-*-c et supprimez ces déclarations.
  2. Recherchez hsla(var(--dwc-shadow-color) et remplacez par un token d'ombre (var(--dwc-shadow-m)) ou réécrivez comme oklch(from ...).
  3. Recherchez les références directes d'étapes de palette (--dwc-color-{name}-{number}). S'il y en a qui alimentent le style spécifique au mode sombre, passez aux tokens de variation (--dwc-color-{name}, -dark, -light).
  4. Recherchez les références aux tailles de police nommées (--dwc-font-size-m, -l, etc.). Si vous souhaitez la taille v25, augmentez d'un niveau.
  5. Recherchez --dwc-font-weight-semibold. Si vous vouliez 500, passez à --dwc-font-weight-medium.
  6. Si vous réservez de l'espace autour des éléments focalisables avec --dwc-focus-ring-width, ajoutez --dwc-focus-ring-gap au rembourrage.
  7. Ouvrez l'application, cliquez autour. La plupart des applications n'ont besoin de rien d'autre.

Continuez à apprendre.