2012-01-09

ADFrc: Warum stretch meine Table nicht ?

Einleitung

In der ADF Project Session 3 in Deutschland im Dezember wurde folgende Frage innerhalb der  Übung  über die  ADF Layout Strategien am häufigsten gestellt:

Warum wird die Tabelle (mit den vorhanden Spalten) nicht auf 100% der Breite und Höhe gestretcht ?

Dieser Eintrag behandelt kurz die wichtigsten Antworten auf die gestellte Frage.

Problem

Simon: "Ich verwende StretchPanelLayout aber trotz dem wird die Tabelle nicht gestretcht !"

Mentor: "Prüfe Deine Seitenstruktur auf Flow Layout !"

09012012_1

Ursache

Einer der häufigsten Ursachen für dieses Erscheinungsbild ist die Tatsache, dass  die Layoutkonzept von Stretch auf Flow gewechselt hat ohne das der Entwickler dies mit bekommen hat.

Sobald eine weitere UI Komponente in eine Facette geworfen wird fügt der Oracle JDeveloper ein PanelGroupLayout - Komponente hinzu und wechselt von der Stretch- auf die Flow - Konzept.

09012012_2_1 09012012_2

Lösung

Aus Stretch wird Flow, wenn sich mehr als eine Komponente im Teilbaum befindet !

Verifiziere Dein Layout im Structure Panel, auch wenn Du den JDeveloper nicht traust !

Problem

Rudolf: "Ich verwende StretchPanelLayout aber trotzdem werden die Spalten meiner Tabelle nicht auf die gesamte Breite verteilt !"

Mentor: "Denke nicht in HTML und CSS (width:100%). Denke in Komponenten !"

09012012_3

Ursache

Wenn ein Bereich gestretch wird, so wird die UI Komponente skaliert, aber nicht automatisch alle weiteren UI Komponenten im Teilbaum. D.h. in diesem Fall, das die PanelCollection auf eine Breite von 100% skaliert wird. Wie die einzelnen Spalten der Table verbreitert werden sollen, ist nicht definiert.

Lösung

Über die Eigenschaft ColumnStretching der UI Komponente Table, kann eine Strategie zum auffüllen, des Leerraumes vorgegeben werden.

09012012_4

af:table - Oracle Fusion Middleware Tag Reference for Oracle ADF Faces (11.1.2)

Geometry Management

This component can be stretched by a parent layout component that stretches its children, e.g. panelStretchLayout. When stretching this component, the only valid setting for autoHeightRows is "-1".

When NOT stretched, autoHeightRows="0" can be used to size the height to the fetch size, which is similar to dimensionsFrom="children". Please refer to 'autoHeightRows' attribute for more information. Use the columnStretching attribute to configure stretching of the children column components

09012012_5

 
Referenzen
JDeveloper Workspace
Oracle Fusion Middleware Tag Reference for Oracle ADF Faces (11.1.2)