Hallo,
ich habe eine Frage zu IF-Abfragen und LIST-Elementen innerhalb BATCH > 1
muss man diese auch mit einem row.get versehen, damit die IF Abfrage funktioniert und die richtige Liste geladen wird und wenn ja wie genau, ich finde dazu leider keine Informationen.
Hier beispielhaft: wir prüfen ob ein Feld nicht leer ist und geben dann aus einer Liste die Werte aufgeteilt aus. Das funktioniert bei BATCH = 1 wunderbar, nur bei BATCH > 1 bekomm ich es nicht hin. WIe muss man das dann umsetzen? (Anführungszeichen sind im JSON richtig, nur hier komisch)
„payload“:
[<#list rows as row>
{
.
.
.
<#if product_s_articles_relationships != ''>
„assignedProducts“:
[
<#list product_s_articles_relationships!?trim?split(‚ᵹ‘) as relationships>
{
„productId“: ${row.get(„relationships“)!?trim}
}<#sep>,</#sep>
</#list>
]
,
</#if>
.
.
.
<#sep>,</#sep>
</#list>]
Vielen Dank!
Hallo @odtsynesty,
bei den Batch-Aufrufen musst man alle Spalten per row["Spaltenname"] adressieren.
Die Kurzform, wo man die Spaltennamen direkt adressiert, gibt es nur bei Batchsize 1. Dann kann man Spaltenname als Shorthand für row["Spaltenname"] nutzen.
Und den Part in deiner inneren Liste verstehe ich nicht ganz. Dort splittest du eine Variable product_s_articles_relationships und iterierst dann über jeden der gesplitteten Werte. Aber in der Schleife addressiert du dann jedoch nicht deinen aktuellen Wert aus der Liste über die relationships-Variable, sondern via ${row.get(„relationships“)!?trim} den aktuellen Wert aus eine Spalte names „relationships“. Ich glaube, dass ist nicht, was du dort eigentlich vor hast.
Für die richtige Darstellung vom Freemarker-Code musst du den Button „Vorformatierten Text“ nutzen (` vor und hinter dem Code). Blockzitate oder garkeine Format machen die Formatierung kaputt.
Gruß
Gustav
Servus Gustav,
besten Dank! Da war ich vorhin nicht sauber im kopieren. Hatte den Part angefangen umzuschreiben, bevor ich über das if gestolpert bin. So sieht der if Part mit der inneren Liste im Original aus (BATCH=1)
<#if product_s_articles_relationships != "">
"assignedProducts":
[<#list product_s_articles_relationships!?trim?split('ᵹ') as relationships>
{"productId": "${relationships!?trim}"}<#sep>,</#sep>
</#list>],
</#if>
Wenn ich das nun richtig verstanden habe, müsste ich das so machen?
<#if row.get(product_s_articles_relationships != "")!>
"assignedProducts":
[<#list row.get(product_s_articles_relationships!?trim?split('ᵹ') as relationships)!>
{"productId": "${row.get("relationships")!?trim}"}<#sep>,</#sep>
</#list>],</#if>
BIn nicht ansatzweise eine Programmierer und mache vieles durch lesen und probieren. Aber bin ich da auf dem richtigen Weg?
Danke und Grüße, Torsten
Hallo Torsten,
fast. Du musst nur die Spaltennamen selbst in dierow.get("...") packen. Oder row["..."]. Das macht dasselbe und ist ein bisschen kürzer
<#if row.get("product_s_articles_relationships") != "">
"assignedProducts":
[<#list row.get("product_s_articles_relationships")?trim?split('ᵹ') as relationships>
{"productId": "${relationships!?trim}"}<#sep>,</#sep>
</#list>],
</#if>
Das ${relationships!?trim} in der Schleife bleibt so bestehen. Dort beziehst du dich auf die in der Zeile davor definierten Variable relationships.
Gruß
Gustav