Passer au contenu principal

Mise à niveau vers 25.00

Ouvrir dans ChatGPT

Cette documentation sert de guide pour mettre à niveau les applications webforJ de la version 24.00 à 25.00. Voici les changements nécessaires pour que les applications existantes continuent de 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.

Serveurs web Jetty 12​

webforJ 25.00 et supérieur utilise Jetty 12, utilisant l'architecture de servlet Jakarta EE10. Si vous utilisez le plugin Maven Jetty pour le développement, migrez de Jakarta EE8 à Jakarta EE10. Cette mise à niveau nécessitera également de remplacer tout ce qui dépendait du paquet javax.servlet par le paquet Jakarta.servlet.

Changements dans le fichier POM​

Avant

<plugin>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-maven-plugin</artifactId>
<version>10.x.xx</version>

Après

<plugin>
<groupId>org.eclipse.jetty.ee10</groupId>
<artifactId>jetty-ee10-maven-plugin</artifactId>
<version>12.x.xx</version>

Changements d'API pour la classe App​

Plusieurs méthodes obsolètes de la classe App ont été supprimées dans la version 25.00. Les sections suivantes décrivent quelles méthodes ont été remplacées et les remplacements recommandés.

Journalisation dans la console​

La classe utilitaire BrowserConsole, dédiée à la création de journaux stylisés dans la console du navigateur, remplace les méthodes consoleLog() et consoleError(). Obtenez le BrowserConsole en utilisant la méthode console() :

public class Application extends App{

@Override
public void run() throws WebforjException {
console().log("Message de journal");
console().error("Message d'erreur");
}
}

Stockage Web​

Pour les versions antérieures à webforJ 25.00, la classe App disposait des méthodes getLocalStorage(), getSessionStorage() et getCookieStorage() pour obtenir des instances des classes LocalStorage, SessionStorage et CookieStorage respectivement. À partir de maintenant, chaque classe dispose d'une méthode getCurrent().

Consultez Web Storage pour plus d'informations.

Classe Request​

La classe Request est désormais responsable de l'obtention de l'URL, du port, de l'hôte et du protocole de l'application. Donc, au lieu d'utiliser App.getUrl(), utilisez App.getCurrent().getUrl(). La méthode getCurrent() remplace également la méthode getRequest() pour obtenir une instance de la classe Request.

info

La classe Request a également supprimé des méthodes, allez à Request pour les voir.

Classe Page​

La méthode getPage() est remplacée par Page.getCurrent() pour obtenir l'instance de la page actuelle.

Dialogues d'options​

Au lieu d'utiliser la méthode msgbox(), utilisez OptionDialog.showMessageDialog() pour créer des dialogues de message.

Terminaison de l'application​

La méthode cleanup() a été supprimée. Il y a maintenant deux méthodes pour la terminaison, onWillTerminate() et onDidTerminate().

Consultez Hooks for termination pour plus d'informations.

Tri des tableaux​

Pour webforJ 25.00 et supérieur, les tableaux utilisent un tri par colonne unique par défaut. Les colonnes ne seront triées que par l'en-tête de colonne récemment sélectionné. Pour faire en sorte qu'un tableau utilise le tri par plusieurs colonnes, invoquez la méthode setMultiSorting() :

table.setMultiSorting(true);

Corps de TabbedPane caché​

La méthode hideBody() est remplacée par setBodyHidden() pour maintenir une convention de nommage constante pour les méthodes.

Rendu HTML à l'intérieur des composants​

Dans webforJ 25.00 et supérieur, il existe une méthode setHtml() pour aider à faire la distinction entre le texte littéral et le texte HTML à l'intérieur d'un composant. Il est toujours possible de définir du HTML en utilisant la méthode setText(), mais cela nécessite désormais de l'encapsuler explicitement avec des balises <html>.

// Utilisations valides de setText() et setHtml()
Button home = new Button();

home.setText("""
<html>
<h1>Accueil</h1>
</html>
""");

home.setHtml("<h1>Accueil</h1>");

home.setText("Accueil");
// Utilisations invalides de setText() et setHtml()
Button home = new Button();
home.setText("<h1>Accueil</h1>");

Conteneurs HTML​

Le paquet com.webforj.component.htmlcontainer n'est plus dans webforJ. Utilisez plutôt le paquet com.webforj.component.element, qui offre plus de fonctionnalités. Pour une liste des classes webforJ pour les éléments HTML standard, allez à HTML Element Components.

Changements dans Request​

  • Tout comme la suppression de la méthode getCookieStorage() pour la classe App, Request n'a plus la méthode getCookie(). Cela renforce l'utilisation de CookieStorgage.getCurrent() pour obtenir une instance de la classe CookieStorage.

  • La méthode getQueryParam() est désormais getQueryParameter().

Changements dans WebforjBBjBridge​

Obtention d'une instance de WebforjBBjBridge​

La classe Environment n'a plus la méthode getWebforjHelper(), utilisez donc getBridge() à la place.

Utilisation du composant ConfirmDialog pour la méthode msgbox()​

Les versions précédentes de webforJ utilisaient des chaînes de caractères et des entiers directement pour la méthode msgbox() de WebforjBBjBridge. Cependant, les messages pour WebforjBBjBridge dans webforJ 25.00 et supérieur utilisent le composant ConfirmDialog. Cela offre plus de contrôle sur les boutons affichés et le type de message.

Avant

Environment environment = Environment.getCurrent();
WebforjBBjBridge bridge = environment.getWebforjHelper();

int msgboxResult = bridge.msgbox("Êtes-vous sûr de vouloir supprimer ce fichier ?", 1, "Suppression");

Après

Environment environment = Environment.getCurrent();
WebforjBBjBridge bridge = environment.getBridge();

ConfirmDialog dialog = new ConfirmDialog(
"Êtes-vous sûr de vouloir supprimer ce fichier ?", "Suppression",
ConfirmDialog.OptionType.OK_CANCEL, ConfirmDialog.MessageType.QUESTION);

int msgboxResult = bridge.msgbox(dialog);

Correction de faute de frappe dans PasswordMediation​

La classe énumérée PasswordMediation, utilisée pour indiquer si un utilisateur doit se connecter à chaque visite d'une application avec un composant Login, contient une faute de frappe dans les versions précédentes de webforJ. SILENT remplace la faute de frappe SILIENT pour webforJ 25.00 et supérieur.

Méthodes de mise au point automatique​

Pour garder webforJ cohérent, des méthodes comme setAutofocus() et isAutofocus() ont désormais une capitalisation uniforme comme l'interface HasAutoFocus. Ainsi, des composants comme Dialog et Drawer utilisent setAutoFocus() et isAutoFocus() pour 25.00 et supérieur.

BBjWindowAdapter et Panel marqués comme final​

Les classes BBjWindowAdapter et Panel sont désormais déclarées comme final, ce qui signifie qu'elles ne peuvent plus être sous-classées. Ce changement améliore la stabilité et impose des modèles d'utilisation cohérents.