Wird die Annotation dynamische Sichtbarkeit verwendet um Attribute in bestimmten Situationen auszublenden (visibility = hidden), dann funktioniert das nicht bei berechneten Attributen. Für berechnete Attribute gilt standardmäßig die Sichtbarkeit read-only und diese überschreibt die für das FormField dynamische berechnete Sichtbarkeit. Vergleiche dazu folgende Methoden: com.top_logic.element.layout.formeditor.implementation.FieldDefinitionTemplateProvider.calculateVisibility(TLStructuredTypePart, FormVisibility, FormMode) und com.top_logic.element.layout.formeditor.implementation.FieldDefinitionTemplateProvider.addMember(FormContext, FormContainer, TLObject, TLStructuredType, TLStructuredTypePart, String, FormVisibility, AnnotationLookup) Da calculateVisibility für berechnete Attribute read-only liefert und nicht default, wird die Sichtbarkeit des FormFields, das innerhalb von addMember gebaut und korrekt initialisiert wurde, nachträglich überschrieben.
Test
- In tl-demo: Technisches Demo > Komponenten > Dynamische Sichtbarkeit und dort das Feld "Summe Positionen", das nur eingeblendet wird, wenn es Positionen gibt.