Overslaan naar hoofdinhoud

Upgrade to 25.00

Openen in ChatGPT

Deze documentatie dient als een gids om webforJ-apps te upgraden van 24.00 naar 25.00. Hier zijn de wijzigingen die nodig zijn voor bestaande apps om soepel te blijven draaien. Zoals altijd, zie de GitHub releaseoverzicht voor een meer uitgebreide lijst met veranderingen tussen releases.

Jetty 12-webservers

webforJ 25.00 en hoger maakt gebruik van Jetty 12, met de Jakarta EE10 servletarchitectuur. Als je de Jetty Maven-plugin voor ontwikkeling gebruikt, migreer dan van Jakarta EE8 naar Jakarta EE10. Deze upgrade vereist ook dat alles wat afhankelijk was van het javax.servlet-pakket wordt vervangen door het Jakarta.servlet-pakket.

POM-bestandwijzigingen

Voor

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

Na

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

API-wijzigingen voor de App-klasse

Verscheidene verouderde App-methoden zijn verwijderd in 25.00. De volgende secties beschrijven welke methoden zijn vervangen en de aanbevolen vervangingen.

Console logging

De hulpprogrammaklasse BrowserConsole, die is gewijd aan het maken van gestileerde logboeken naar de browserconsole, vervangt de consoleLog() en consoleError() methoden. Verkrijg de BrowserConsole door gebruik te maken van de console()-methode:

public class Application extends App{

@Override
public void run() throws WebforjException {
console().log("Logbericht");
console().error("Foutmelding");
}
}

Webopslag

Voor versies vóór webforJ 25.00 heeft de App-klasse de methoden getLocalStorage(), getSessionStorage() en getCookieStorage() om instanties van de respectieve LocalStorage, SessionStorage en CookieStorage klassen te verkrijgen. Voortaan heeft elke klasse een getCurrent()-methode.

Zie Web Storage voor meer informatie.

Request-klasse

De Request-klasse is nu verantwoordelijk voor het verkrijgen van de URL, poort, host en protocol van een app. Dus in plaats van App.getUrl() te gebruiken, gebruik je App.getCurrent().getUrl(). De getCurrent()-methode vervangt ook de getRequest()-methode om een instantie van de Request-klasse te verkrijgen.

info

De Request-klasse heeft ook verwijderde methoden, spring naar Request om ze te zien.

Page-klasse

De getPage()-methode is vervangen door Page.getCurrent() om de huidige pagina-instantie te verkrijgen.

Optiedialogen

In plaats van de msgbox()-methode te gebruiken, gebruik je OptionDialog.showMessageDialog() om messagedialogen te creëren.

App-beëindiging

De cleanup()-methode is verwijderd. Er zijn nu twee methoden voor beëindigingen: onWillTerminate() en onDidTerminate().

Zie Hooks voor beëindiging voor meer informatie.

Tabelsortering

Voor webforJ 25.00 en hoger gebruiken tabellen standaard sorteren op één kolom. Kolommen worden alleen gesorteerd op de meest recent geselecteerde kolomkop. Om een tabel meervoudige sortering te laten gebruiken, roep je de setMultiSorting() methode aan:

table.setMultiSorting(true);

Verborgen TabbedPane-body

De hideBody()-methode is vervangen door setBodyHidden() om een consistente naamgevingsconventie voor methoden te handhaven.

HTML renderen binnen componenten

In webforJ 25.00 en hoger is er een setHtml()-methode om een onderscheid te maken tussen het instellen van letterlijke en HTML-tekst binnen een component. HTML instellen met de setText()-methode is nog steeds mogelijk, maar vereist nu expliciet het omhullen met <html>-tags.

// Geldige toepassingen van setText() en setHtml()
Button home = new Button();

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

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

home.setText("Startpagina");
// Ongeldige toepassingen van setText() en setHtml()
Button home = new Button();
home.setText("<h1>Startpagina</h1>");

HTML-container

Het com.webforj.component.htmlcontainer-pakket is niet langer beschikbaar in webforJ. Gebruik in plaats daarvan het meer uitgebreide com.webforj.component.element-pakket. Voor een lijst van webforJ-klassen voor standaard HTML-elementen, ga naar HTML Element Components.

Request-wijzigingen

  • Net als de verwijdering van de getCookieStorage()-methode voor de App-klasse, heeft Request niet langer de getCookie()-methode. Dit versterkt het gebruik van CookieStorage.getCurrent() om een instantie van de CookieStorage-klasse te verkrijgen.

  • De getQueryParam()-methode is nu getQueryParameter().

WebforjBBjBridge wijzigingen

Een instantie van WebforjBBjBridge verkrijgen

De Environment-klasse heeft niet langer de getWebforjHelper()-methode, dus gebruik in plaats daarvan getBridge().

De ConfirmDialog component gebruiken voor de msgbox()-methode

Eerdere versies van webforJ gebruiken strings en gehele getallen rechtstreeks voor de WebforjBBjBridge msgbox()-methode. Echter, berichten voor WebforjBBjBridge in webforJ 25.00 en hoger gebruiken de ConfirmDialog component. Dit biedt meer controle over welke knoppen worden weergegeven en het type bericht.

Voor

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

int msgboxResult = bridge.msgbox("Weet je zeker dat je dit bestand wilt verwijderen?", 1, "Verwijdering");

Na

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

ConfirmDialog dialog = new ConfirmDialog(
"Weet je zeker dat je dit bestand wilt verwijderen?", "Verwijdering",
ConfirmDialog.OptionType.OK_CANCEL, ConfirmDialog.MessageType.QUESTION);

int msgboxResult = bridge.msgbox(dialog);

Typo-correctie PasswordMediation

De enum-klasse PasswordMediation, gebruikt om aan te geven of een gebruiker bij elke bezoek aan een app met een Login-component zich moet aanmelden, had een typfout in eerdere versies van webforJ. SILENT vervangt de typfout SILIENT voor webforJ 25.00 en hoger.

Autofocusmethoden

Om webforJ consistent te houden, hebben methoden zoals setAutofocus() en isAutofocus() nu een uniforme kapitalisatie zoals de HasAutoFocus-interface. Dus componenten zoals Dialog en Drawer gebruiken setAutoFocus() en isAutoFocus() voor 25.00 en hoger.

BBjWindowAdapter en Panel gemarkeerd als final

De klassen BBjWindowAdapter en Panel zijn nu gemarkeerd als final, wat betekent dat ze niet langer kunnen worden onderverdeeld. Deze wijziging verbetert de stabiliteit en handhaaft consistente gebruikspatronen.