TopLogic - the automated application engine
  • Releases
  • Dokumentation
  • Github
  • Discord
  1. Home
  2. Releases
  3. TL_7.9.6
  4. #28331

7.9.6
TopLogic Release

2025-08-06

Verbesserung

Wichtig
#28593
Baumselektions-Modell mit Teilbaum-Selektionslogik
#28695
Selektionsfilter für (Tree-)tables und -grids im Layout-Editor einstellen
#28704
Optimierter Zugriff auf Tabelle FLEX_DATA für manche DBs
Detail
#28613
"DefaultFor" Konfigurationsoption im "advanceProcess"-Template für BPE
#28679
Dynamische Labels für FormTableDefinition
#28705
Formlar-Dialoge bei Cancel schließen
#28712
Test kann einstellen ob Warnings zu Fehlschlag führen
Kleinigkeit
#28588
Option, Tabellen in Formularen als nicht selektierbar zu markieren

Fehlerbehebung

Wichtig
#28673
Sicherheitslücke in commons-beanutils (CVE-2025-48734)
#28675
Opening Excel-Scripts in Script Recorder fails when starting from command line
#28676
Absicherung von Kafka-Client-Konfiguration gegen SSRF und File-Reads (CVE-2025-27817)
#28684
DoS-Sicherheitslücke in Apache Commons FileUpload (CVE-2025-48976)
#28692
ClassCastException in der ActiveTaskComponent
#28700
Sicherheitslücke bei Workflow-Übergängen - Unautorisierte Bearbeitung nach Task-Abschluss
#28739
TL-Script Methode filterPermission darf nicht zur Compilezeit ausgewertet werden
Detail
#28331
Falsche Update-Typ-Erstellung in tUpdate führt zu ignorieren von Hidden-Attribut-Änderungen
#28617
Bug: Post-Create-Actions fehlen bei Prozess-Start ohne Prüfung
#28640
Mandatory Multiline Felder haben keinen blauen Strich
#28665
Berechnete Attribute werden bei Tabellenänderungen nicht aktualisiert
#28666
Fehlender DisplayContext nach BinaryDataSource-Conversion
#28667
Pipe closed Fehler beim Mail-Versand durch doppeltes Rendering von Inhalten ohne EncodingAware-Interface
#28671
ExcelWriter-Methoden fehlen
#28686
REST-Routing: Kürzere Pfade werden vor längeren Pfaden priorisiert und verursachen falsches Route-Matching
#28690
Anlegen in Währungsadministration hat falsche Kommandogruppe
#28698
Ausführbarkeitsregel wird auf gelöschtem Objekt geprüft
#28706
Formulartabellen überschreiten Container-Breite
#28707
Falsches Dirty-Handling im SelectTransitionDialog (BPE)
#28724
Selektionsfilter darf nicht auf gelöschten Objekten ausgewertet werden
#28726
Unique-Constraint-Violation bei mehrfacher Anwendung des MoveObjectsProcessor
Kleinigkeit
#28458
Falsche Abfrage, ob Komponente Multi-Selektion unterstützt
Fehlerbehebung

Detail

#28331

Falsche Update-Typ-Erstellung in tUpdate führt zu ignorieren von Hidden-Attribut-Änderungen

Bei Attributen mit eigenentwickelter Speicherimplementierung, die Werte in versteckte Zielattribute umleiten, wird fälschlicherweise ein CreateUpdate statt eines EditUpdates erstellt. Dies führt dazu, dass Null-Werte nicht gespeichert werden können.
Konkretes Szenario:

  • Attribut A besitzt eine Custom-Speicherimplementierung
  • Eingaben in A werden nicht direkt in A gespeichert, sondern transformiert in das versteckte Attribut B
  • A zeigt stets den Wert von B multipliziert mit 10 an
  • Eingaben in A werden durch 10 geteilt und in B persistiert
  • Beispiel: Eingabe "100" in A → Speicherung "10" in B → Anzeige "100" in A

Fehlerverhalten:
Beim Versuch, Attribut A auf null zu setzen, wird ein CreateUpdate generiert. Da die Speicherimplementierung bei CreateUpdates mit null-Werten keine Persistierung durchführt, bleibt die gewünschte Null-Setzung wirkungslos.

Ursache:

Die tUpdate-Methode erstellt automatisch ein CreateUpdate, wenn kein bestehendes AttributeUpdate vorhanden ist, ohne zu prüfen, ob das zugehörige Objekt bereits existiert.

if (update == null) {     
    update = newCreateUpdate(part);  // Immer CreateUpdate - FALSCH
}


Lösung

Vor der Update-Erstellung muss geprüft werden, ob das bearbeitete Objekt bereits existiert:

  • Bei existierenden Objekten: EditUpdate verwenden
  • Bei neuen Objekten: CreateUpdate verwenden
if (update == null) {
    TLObject object = getEditedObject();
    if (object == null) {
        update = newCreateUpdate(part);           // Neues Objekt
    } else {
        update = newEditUpdateDefault(part, false); // Bestehendes Objekt
    }
}
  • Get Started
  • Github
  • Discord
  • Das Unternehmen hinter TopLogic
  • Softwareentwicklung heute
  • Kontakt

© Copyright – Business Operation Systems GmbH

  • top-logic.com
  • Nutzungsbedingungen
  • Impressum
  • Rechtlicher Hinweis
  • Datenschutz
  • EN
  • Login