Upgrade to 25.00
Diese Dokumentation dient als Leitfaden zum Upgrade von webforJ-Anwendungen von 24.00 auf 25.00. Hier sind die Änderungen, die für bestehende Apps erforderlich sind, um weiterhin reibungslos zu funktionieren. Wie immer finden Sie die GitHub-Release-Übersicht für eine umfassendere Liste der Änderungen zwischen den Versionen.
Jetty 12-Webserver
webforJ 25.00 und höher verwenden Jetty 12, das die Jakarta EE10-Servlet-Architektur nutzt. Wenn Sie das Jetty Maven-Plugin für die Entwicklung verwenden, migrieren Sie von Jakarta EE8 zu Jakarta EE10. Dieses Upgrade erfordert auch, alles, was auf dem Paket javax.servlet
basierte, durch das Paket Jakarta.servlet
zu ersetzen.
Änderungen der POM-Datei
Vorher
<plugin>
<groupId>org.eclipse.jetty.ee8</groupId>
<artifactId>jetty-ee8-maven-plugin</artifactId>
<version>10.x.xx</version>
Nachher
<plugin>
<groupId>org.eclipse.jetty.ee10</groupId>
<artifactId>jetty-ee10-maven-plugin</artifactId>
<version>12.x.xx</version>
API-Änderungen für die App
-Klasse
Mehrere veraltete App
-Methoden wurden in 25.00 entfernt. Die folgenden Abschnitte umreißen, welche Methoden ersetzt wurden und welche empfohlenen Ersetzungen es gibt.
Konsolenprotokollierung
Die Utility-Klasse BrowserConsole
, die zum Erstellen von formatierten Protokollen in der Browserkonsole verwendet wird, ersetzt die Methoden consoleLog()
und consoleError()
. Holen Sie sich die BrowserConsole
, indem Sie die Methode console()
verwenden:
public class Application extends App{
@Override
public void run() throws WebforjException {
console().log("Protokollnachricht");
console().error("Fehlermeldung");
}
}
Web-Speicher
Für Versionen vor webforJ 25.00 hat die App
-Klasse die Methoden getLocalStorage()
, getSessionStorage()
und getCookieStorage()
, um Instanzen der Klassen LocalStorage
, SessionStorage
und CookieStorage
zu erhalten. Zukünftig hat jede Klasse eine Methode getCurrent()
.
Siehe Web Storage für weitere Informationen.
Request
-Klasse
Die Request
-Klasse ist jetzt dafür verantwortlich, die URL, den Port, den Host und das Protokoll einer App abzurufen. Anstelle von App.getUrl()
verwenden Sie App.getCurrent().getUrl()
. Die Methode getCurrent()
ersetzt auch die Methode getRequest()
, um eine Instanz der Request
-Klasse zu erhalten.
Die Request
-Klasse hat ebenfalls entfernte Methoden, springen Sie zu Request
, um sie zu sehen.
Page
-Klasse
Die Methode getPage()
wurde durch Page.getCurrent()
ersetzt, um die aktuelle Seiteninstanz abzurufen.
Optionsdialoge
Verwenden Sie anstelle der Methode msgbox()
den OptionDialog.showMessageDialog()
, um Nachrichtendialoge zu erstellen.
App-Beendigung
Die Methode cleanup()
wurde entfernt. Es gibt jetzt zwei Methoden für Beendigungen: onWillTerminate()
und onDidTerminate()
.
Siehe Hooks für die Beendigung für weitere Informationen.
Tabellensortierung
Für webforJ 25.00 und höher verwenden Tabellen standardmäßig die Sortierung nach einer einzelnen Spalte. Spalten werden nur nach dem zuletzt ausgewählten Spaltenkopf sortiert. Um eine Tabelle für die Mehrspaltensortierung zu verwenden, rufen Sie die Methode setMultiSorting()
auf:
table.setMultiSorting(true);
Versteckter TabbedPane
-Körper
Die Methode hideBody()
wurde durch setBodyHidden()
ersetzt, um eine konsistente Namenskonvention für Methoden zu wahren.
Rendering von HTML innerhalb von Komponenten
In webforJ 25.00 und höher gibt es eine Methode setHtml()
, um zwischen dem Setzen von literalem und HTML-Text innerhalb einer Komponente zu unterscheiden. Das Setzen von HTML mit der Methode setText()
ist weiterhin möglich, erfordert jedoch jetzt explizites Umschließen mit <html>
-Tags.
// Gültige Verwendungen von setText() und setHtml()
Button home = new Button();
home.setText("""
<html>
<h1>Startseite</h1>
</html>
""");
home.setHtml("<h1>Startseite</h1>");
home.setText("Startseite");
// Ungültige Verwendungen von setText() und setHtml()
Button home = new Button();
home.setText("<h1>Startseite</h1>");
HTML-Container
Das Paket com.webforj.component.htmlcontainer
ist nicht mehr in webforJ vorhanden. Verwenden Sie stattdessen das funktionsreichere Paket com.webforj.component.element
. Für eine Liste von webforJ-Klassen für Standard-HTML-Elemente siehe HTML Element Components.
Änderungen bei Request
-
Wie die Entfernung der Methode
getCookieStorage()
für dieApp
-Klasse hatRequest
auch nicht mehr die MethodegetCookie()
. Dies verstärkt die Verwendung vonCookieStorage.getCurrent()
, um eine Instanz derCookieStorage
-Klasse zu erhalten. -
Die Methode
getQueryParam()
heißt jetztgetQueryParameter()
.
Änderungen bei WebforjBBjBridge
Abrufen einer Instanz von WebforjBBjBridge
Die Klasse Environment
hat nicht mehr die Methode getWebforjHelper()
, verwenden Sie stattdessen getBridge()
.
Verwendung der ConfirmDialog
-Komponente für die Methode msgbox()
Frühere Versionen von webforJ verwendeten Zeichenfolgen und Ganzzahlen direkt für die msgbox()
-Methode von WebforjBBjBridge
. Nachrichten für WebforjBBjBridge
in webforJ 25.00 und höher verwenden die ConfirmDialog
-Komponente. Dies bietet mehr Kontrolle über die angezeigten Schaltflächen und den Nachrichtentyp.
Vorher
Environment environment = Environment.getCurrent();
WebforjBBjBridge bridge = environment.getWebforjHelper();
int msgboxResult = bridge.msgbox("Sind Sie sicher, dass Sie diese Datei löschen möchten?", 1, "Löschung");
Nachher
Environment environment = Environment.getCurrent();
WebforjBBjBridge bridge = environment.getBridge();
ConfirmDialog dialog = new ConfirmDialog(
"Sind Sie sicher, dass Sie diese Datei löschen möchten?", "Löschung",
ConfirmDialog.OptionType.OK_CANCEL, ConfirmDialog.MessageType.QUESTION);
int msgboxResult = bridge.msgbox(dialog);
Rechtschreibkorrektur von PasswordMediation
Die Enum-Klasse PasswordMediation
, die angibt, ob ein Benutzer bei jedem Besuch einer App mit einer Login
-Komponente angemeldet werden muss, hatte in früheren webforJ-Versionen einen Tippfehler. SILENT
ersetzt den Tippfehler SILIENT
für webforJ 25.00 und höher.
Auto-Fokus-Methoden
Um webforJ konsistent zu halten, haben Methoden wie setAutofocus()
und isAutofocus()
jetzt eine einheitliche Großschreibung wie das Interface HasAutoFocus. Daher verwenden Komponenten wie Dialog
und Drawer
für 25.00 und höher setAutoFocus()
und isAutoFocus()
.
BBjWindowAdapter
und Panel
als final
markiert
Die Klassen BBjWindowAdapter
und Panel
sind jetzt als final
deklariert, was bedeutet, dass sie nicht mehr unterklassenfähig sind. Diese Änderung verbessert die Stabilität und erzwingt konsistente Nutzungsmuster.