Overslaan naar hoofdinhoud

Upgraden naar 26.00

Openen in ChatGPT

Deze documentatie dient als een gids voor het upgraden van webforJ-apps van 25.00 naar 26.00.
Hier zijn de wijzigingen die nodig zijn voor bestaande apps om soepel te blijven draaien.
Zoals altijd, zie de GitHub release-overzicht voor een meer uitgebreide lijst van wijzigingen tussen de versies.

POM-bestand wijzigingen​

Java 21 en 25​

webforJ 25.12 is de laatste versie die werkt met Java 17.
Met de start van webforJ 26.00 heb je een Java-versie nodig die ofwel Java 21 of Java 25 is, afhankelijk van je opstelling.

Installeer de vereiste Java-versie zoals vermeld in de vereisten, en werk vervolgens je pom.xml-bestand bij:

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

Maven-repository-URL​

De locatie waar de snapshot-artifacten worden gehost, is veranderd. Heb je in het pom.xml-bestand van je project je afhankelijkheden gedownload van het Central Portal?

Voorheen:

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

Daarna:

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

Spring Boot upgrade​

webforJ 25.12 is de laatste versie die Spring Boot 3.x gebruikt.
Met de start van webforJ 26.00 moet je project Spring Boot 4.x gebruiken.

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>4.0.5</version>
</parent>
Verwijderen van overrides voor de Tomcat-versie

Met Spring Boot 4.x is Tomcat 11.x nu inbegrepen als een afhankelijkheid, dus je kunt elke project-specifieke override voor de Tomcat-versie verwijderen.

Wijzigingen in de Table API​

IconRenderer string-gebaseerde constructeurs​

De volgende string-gebaseerde constructeurs zijn verwijderd in 26.00; gebruik in plaats daarvan IconDefinition-gebaseerde constructeurs:

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)

Verlopen selectiemethoden​

Met de start van webforJ 26.00, kies in plaats van items in een Table op basis van indices, items in een tafel met behulp van de item sleutel. Je kunt de methode setKeyProvider() gebruiken om aangepaste sleutels voor de items in de tabel te verstrekken.

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

Selectie-events​

Om de verschuiving in hoe items in een Table te selecteren verder te benadrukken, implementeert TableItemSelectionChange niet langer SelectEvent.

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

Niet-ondersteunde Webswing bootstrap-opties​

De volgende WebswingOptions-methoden zijn verouderd en verwijderd in 26.00 omdat ze niet langer worden ondersteund door de Webswing API.

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

De klasse PingParams is ook verouderd. Degenen die deze methoden of de klasse PingParams gebruikten, moeten in plaats daarvan de Webswing Admin Console gebruiken om de opties rechtstreeks te configureren.

Filters voor Repository​

De interfaces RetrievalCriteria en RetrievalBuilder zijn verwijderd in webforJ 26.00. In plaats van de algemene Repository-interface te gebruiken, gebruik je ofwel RepositoryCriteria<T, F>, CollectionRepository voor eenvoudige filters, of QueryableRepository voor meer geavanceerde filteringstypen, sorteren en paginering.

Voorheen:

private String searchTerm = "";

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

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

Daarna:

private String searchTerm = "";

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

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

Verlopen repository-methoden​

Gebruik de volgende tabel om de verouderde repository-methoden te zien en welke methoden je in de toekomst moet gebruiken.

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

Verwijdering van WebforjBBjBridge​

Met de start van webforJ 25.11 is WebforjBBjBridge en al zijn API's verwijderd. In plaats van de brug te benaderen, gebruikt webforJ nu de directe Java API om te communiceren met en toegang te krijgen tot benodigde BBj API's.

Wijzigingen in het ontwerp systeem (DWC 26)​

webforJ 26.00 wordt geleverd met versie 26 van het DWC-ontwerp systeem. De update is incrementeel in plaats van een volledige herschrijving: de meeste v25 CSS-variabelen blijven beschikbaar, de publieke token-API wordt behouden en bestaande aanpassingen blijven werken zonder wijzigingen.

Deze sectie vermeldt de breekbare wijzigingen waarmee je rekening moet houden. Voor het conceptuele overzicht, inclusief hoe de nieuwe kleurengine eruitziet, hoe --dwc-dark-mode zich verspreidt, waarom ripples zijn verwijderd, en de mechanica per gebied, zie DWC 26 ontwerpsysteem.

Snelle uitspraak​

ScenarioWat te verwachten
Gebruik standaard opmaakVisuele vernieuwing. Standaard paletkleuren zijn opnieuw afgesteld (primaire kleur is verplaatst van h: 211 / s: 100% naar h: 223 / s: 91%), schaduwen komen meer gelaagd over, en componenten voelen ronder aan. Geen codewijziging nodig.
Overschrijft --dwc-color-{name}-h en -sWerkt nog steeds. Het HSL-zaadpad is bewaard gebleven.
Overschrijft individuele paletstappen (bijvoorbeeld --dwc-color-primary-40)Stapnummers kunnen naar verschillende kleuren verwijzen. Zie Kleur paletmechanica.
Vertrouwt op --dwc-color-{name}-cVerwijder. De licht/donker tekstomkering wordt nu automatisch per schaduw berekend.
Verwijst naar benoemde font-grootte tokens (--dwc-font-size-m, -l, enzovoort)De schaal is verlaagd met één stap. m is nu 14px in plaats van 16px. Zie Typografie.
Gebruikt --dwc-font-weight-semibold om 500-gewicht te krijgensemibold is nu 600. Schakel over naar de nieuwe --dwc-font-weight-medium voor 500.
Reserves padding rond focusbare elementen met --dwc-focus-ring-widthDe ring heeft nu een gat. Voeg --dwc-focus-ring-gap toe. Zie Focusring.
Aangepaste hover/ripple-effecten van knoppenRipples zijn verdwenen. De drukfeedback is nu een kleine schaalreductie.

--dwc-color-{name}-c is verwijderd​

Als je een of andere --dwc-color-{name}-c overschrijvingen hebt, kun je ze verwijderen, ze hebben geen effect. De licht/donker tekstomkering wordt nu automatisch berekend per schaduw.

Semantiek van --dwc-color-{name}-alt veranderd​

Tokenv25v26
--dwc-color-{name}-altPaletstap 95 (bijna-witte achtergrond)Zaad met 12% doorzichtigheid (doorzichtige tint)

Als je -alt gebruikte als een solide bijna-witte achtergrond, wordt het nu weergegeven als een doorzichtige getinte overlay. Kies een specifieke stap (--dwc-color-{name}-95) of ontwerp rondom de doorzichtige semantiek.

Semantiek van --dwc-border-color-{name} veranderd​

Tokenv25v26
--dwc-border-color-{name}Op elke variant ingesteld als var(--dwc-color-{name}) (de verzadigde tint)Gemaakt in de generator: modus-bewuste verlichte toon van het zaad

Als je CSS --dwc-border-color-primary leest in de verwachting de verzadigde primaire kleur te krijgen, is de visuele aankleding nu een subtiele scheidingston in plaats daarvan. Als je specifiek de verzadigde uitstraling wilt, schakel dan rechtstreeks over naar --dwc-color-primary.

Formaat van --dwc-shadow-color veranderd​

v25v26
--dwc-shadow-colorHSL-driehoek (h, s%, l%)Volledige OKLCH-kleur

Als je CSS de legacy-driehoekvorm gebruikt zoals hsla(var(--dwc-shadow-color), 0.07), schakel dan over naar een volledige schaduwtoken (var(--dwc-shadow-m)) of herschrijf met oklch(from var(--dwc-shadow-color) l c h / 0.07).

Typografie​

De lettertype-schaal is opnieuw afgestemd, zodat de benoemingen van de bakken met één stap zijn verschoven:

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

De standaard --dwc-font-size blijft nog steeds resolvable op 14px, het bereikt het gewoon via --dwc-font-size-m (v26) in plaats van --dwc-font-size-s (v25). Als je CSS font-grootte tokens bij naam verwijst (bijv. font-size: var(--dwc-font-size-l)), zal het zichtbare resultaat kleiner zijn in v26. Stap één bakje omhoog om de grootte van v25 te behouden.

Fontgewichten hebben drie tokens gekregen (thin, medium, black) en één bestaand token is verschoven:

Tokenv25v26
--dwc-font-weight-semibold500600
--dwc-font-weight-medium(bestond niet)500

Als je --dwc-font-weight-semibold gebruikte om 500-gewichttekst te krijgen, schakel dan over naar --dwc-font-weight-medium.

Border radius​

v25v26
Eenheidem (schaalt met de lettergrootte van de ouder)rem (schaalt met de lettergrootte van de wortel)
Standaard --dwc-border-radius--dwc-border-radius-s (4px)--dwc-border-radius-seed (8px)
Beschikbare stappentot 2xlvoegt 3xl, 4xl toe

Componenten voelen uit de doos ronder aan. Als een component genesteld in grotere tekst eerder een grotere straal erfde via em, gebeurt die schaling nu niet meer, radii zijn nu verankerd aan de wortel. Als je de standaardgrootte van v25 wilt behouden, halveer dan het zaad:

:root {
--dwc-border-radius-seed: 0.25rem; /* 4px, halveert de hele schaal */
}

Focusring​

De focusring gebruikt nu een dubbel-ringpatroon: een kleine oppervlakte-kleurige opening, gevolgd door de gekleurde ring.

Variabelev25v26
--dwc-focus-ring-width3px2px
--dwc-focus-ring-a0.40.75
--dwc-focus-ring-gap(geen)2px
--dwc-focus-ring-l45%(verwijderd, lichtheid wordt per modus berekend)

Als je ruimte rond focusbare elementen reserveert met padding: var(--dwc-focus-ring-width), voeg dan de opening toe aan die padding zodat de nieuwe ring ruimte heeft om te renderen:

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

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

Ripples verwijderd​

Material-stijl ripple-effecten worden niet langer gebruikt door enige DWC-component. De nieuwe feedback voor elk klikbaar element is een kleine schaalreductie:

--dwc-scale-press: 0.97; /* Standaard 3% krimp */
--dwc-scale-press-deep: 0.93; /* Diepere 7% krimp voor knoppen */

De ripple SCSS-mixin en de --dwc-ripple-color CSS-variabele bestaan nog steeds in de build, maar niets importeert ze standaard. Als je eigen componenten zich bij de mixin voegden, schakel dan over naar de druk-schaal tokens om bij het nieuwe gevoel te passen.

Overgangsduur herbalanceerd​

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

Als je afhankelijk bent van een specifieke duur, overschrijf deze in :root.

Pragmatic upgrade checklist​

  1. Zoek naar --dwc-color-*-c en verwijder die declaraties.
  2. Zoek naar hsla(var(--dwc-shadow-color) en vervang deze door een schaduwtoken (var(--dwc-shadow-m)) of herschrijf als oklch(from ...).
  3. Zoek naar directe referenties naar paletstappen (--dwc-color-{name}-{number}). Als er styling specifiek voor donkere modus aan wordt gevoerd, schakel dan over naar variatietokens (--dwc-color-{name}, -dark, -light).
  4. Zoek naar benoemde font-grootte referenties (--dwc-font-size-m, -l, enzovoort). Als je de grootte van v25 wilt, stap dan één bakje omhoog.
  5. Zoek naar --dwc-font-weight-semibold. Als je 500 wilde, schakel dan over naar --dwc-font-weight-medium.
  6. Als je ruimte rond focusbare elementen reserveert met --dwc-focus-ring-width, voeg --dwc-focus-ring-gap toe aan de padding.
  7. Open de app, klik rond. De meeste apps hebben niets anders nodig.

Blijf leren