Upgrade to 25.00
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.
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 deApp
-klasse, heeftRequest
niet langer degetCookie()
-methode. Dit versterkt het gebruik vanCookieStorage.getCurrent()
om een instantie van deCookieStorage
-klasse te verkrijgen. -
De
getQueryParam()
-methode is nugetQueryParameter()
.
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.