row-Variable

Hallo,


bis vor 5 Minuten war mir nicht klar, dass im SSM standardmäßig die Variable row existiert.

Wenn ich davor in Freemarker-Skript auf alle Felder einer Reihe zugreifen wollte, habe ich über das gesamte Spreadsheet iteriert, bis die entsprechende Zeile gefunden wurde. Schnell ist anders.


Ob das ganze ein reines "Ich-Problem" war, möchte ich nicht ausschließen. Für mich bezogen sich die ganzen Anwendung der row-Variable im Handbuch immer auf einer Iteration übers Spreadsheet à la:

<#list meta.spreadsheet@SpreadsheetMapper_1.getRows() as row> 

Wenn die Variable in der Liste der einfügbaren Werte auftauchen würde, wäre mir sicherlich schon früher aufgefallen, dass sie existiert.

image

Vielleicht macht es auch Sinn, im Handbuch konkret zu erwähnen, dass via die row-Variable auf die gesamte Reihe zugegriffen werden kann. Vielleicht gibt es den Satz auch schon und der versteckt sich nur zu gut.


Ihr könnt das ganze als Schutzmaßnahme sehen. Damit nicht noch mehr Leute die Server mit schrecklich redundanten Skripten quälen.


Gruß,

Gustav

Danke für die Anregung. Bei den Funktionen (Schraubenschlüssel) taucht es schon einige Male auf und im Handbuch auch unter den Spreadsheet-Funktionen.




Aber du hast Recht, so richtig offensichtlich ist das bisher nicht und an der von dir vorgeschlagenen Stelle wäre es deutlicher. Evtl. hatten wir uns dagegen entschieden, weil die Frage wäre, was man an der Stelle für ein sinnvolles Beispiel einfügt, wenn man drauf klickt. Mit der ${row} allein, kann man noch nicht so viel machen bzw. nur Experten wüssten damit etwas anzufangen.


Hast du eine Idee oder mal ein Beispiel, was du mit der Row so machst?



Stimmt schon, die Aufruf von ${row!} wird die meisten nicht weiterbringen.


Wenn ich die Spreadsheet-Funktionen benutze, geht es meistens darum, in irgendeiner Form dynamisch auf die Felder des Spreadsheets zuzugreifen.


Heute ging es darum, alle Felder einer Reihe in eine KeyValue-Liste umzuformen. Ist auch ein ganz anschauliches Beispiel, finde ich. Zeigt nicht nur die row-Variable,sondern auch die Iteration über die Spalten.

<#list row.getCols() as col>${col.getTitle()}=${col.get()}<#sep>;</#list>

Alternativ, wenn man nur die Werte haben will, geht es auch noch deutlich kürzer.

${row.cols?join(';')}


Man könnte an der Stelle auch zusätzlich noch ein Fragezeichen einfügen, was direkt auf die Spreadsheet-Funktionen-Seite verlinkt. So wie bei den Template Funktionen.

Der Hilfelink (Fragezeichen) ist eine gute Idee. Das nehmen wir mit auf.
Wir haben ausserdem die Seite im Handbuch noch um eine Infobox zur row-Variable ergänzt.