Hewera-Harz
Returning Observer

Werte von Elementen einer Absatzvorlage auslesen - FS_REFERENCE und FS_LIST

Jump to solution

Zur Erstellung einer csv Datei gehe ich über alle PageRefs in einem bestimmten Verzeichnis in der Struktur und lese die
Werte von Elementen in der ersten Absatzvorlage aus.

Das klappt mit CMS_INPUT_DATE und CMS_INPUT_DOM hervorragend.

Leider geht es nicht mit FS_REFERENCE und FS_LIST.

Ich hab schon alles möglich ausprobiert und komme nicht weiter.

Danke und Grüße
Petra Hewera-Harz

Das sind die Formularelemente in der Absatzvorlage, bei denen das Auslesen nicht klappt:

<FS_LIST name="st_kat_news" hFill="yes" height="300">
    <DATASOURCE type="database" useLanguages="no">
      <ACTIONS>
        <ACTION name="ADD">
          <PARAM name="select-ui">popup</PARAM>
        </ACTION>
        <ACTION name="REMOVE"/>
        <ACTION name="DOWN"/>
        <ACTION name="UP"/>
      </ACTIONS>
      <COLUMNS>
        <COLUMN show="no">#identifier</COLUMN>
        <COLUMN show="yes">#released</COLUMN>
        <COLUMN show="yes" sortOrder="ascending">cs_kat</COLUMN>
      </COLUMNS>
      <LAYOUT>
        <ADD component="stackedview" constraint="hide"/>
        <ADD component="overview" constraint="center"/>
        <ADD component="toolbar" constraint="top"/>
      </LAYOUT>
      <TABLE>vertriebsportal.news_kategorien</TABLE>
    </DATASOURCE>
    <LANGINFOS>
      <LANGINFO lang="*" label="News-Kategorien auswählen..."/>
    </LANGINFOS>
  </FS_LIST>
 
  <FS_REFERENCE name="st_bild_news" allowEmpty="no" hFill="yes" imagePreview="yes" upload="yes">
    <FILTER>
      <ALLOW type="picture"/>
      <HIDE type="file"/>
      <HIDE type="folders"/>
    </FILTER>
    <LANGINFOS>
      <LANGINFO lang="*" label="Bild für News-Detail-Seite" description="Bitte wählen Sie ein Bild aus."/>
    </LANGINFOS>
    <PROJECTS>
      <LOCAL name=".">
        <SOURCES>
          <FOLDER name="images" store="mediastore"/>
        </SOURCES>
      </LOCAL>
    </PROJECTS>
  </FS_REFERENCE>
 
  Das ist die html Ausgabe (Ausschnitt):
  über PageRefs in einem bestimmten Folder in der Struktur gehen und dann die Werte der Formularelemente in Variablen schreiben
 

$CMS_FOR(media, folder.getChildren(class("de.espirit.firstspirit.access.store.sitestore.PageRef"),true))$

Klappt:

$CMS_SET(set_datum)$
$CMS_IF(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().getForm().findEditor("st_datum_news") != null)$
  $CMS_IF(!ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_datum_news").isEmpty && !ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_datum_news").isNull)$
   $CMS_VALUE(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_datum_news").get())$
  $CMS_ELSE$
   empty
  $CMS_END_IF$
$CMS_ELSE$
  null
$CMS_END_IF$
$CMS_END_SET$

Klappt:
$CMS_SET(set_teasertext)$
$CMS_IF(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().getForm().findEditor("st_teasertext_news") != null)$
  $CMS_IF(!ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_teasertext_news").isEmpty && !ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_teasertext_news").isNull)$
   $CMS_VALUE(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_teasertext_news").get())$
  $CMS_ELSE$
   empty
  $CMS_END_IF$
$CMS_ELSE$
  null
$CMS_END_IF$
$CMS_END_SET$

Klappt nicht und wirft einen Fehler bei der Publizierung (siehe unten):
$CMS_SET(set_teaserbild)$
$CMS_IF(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().getForm().findEditor("st_bild_news") != null)$  
  $CMS_IF(!ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_bild_news").isEmpty && !ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_bild_news").isNull)$
   $CMS_VALUE(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_bild_news").get())$   
  $CMS_ELSE$
   empty
  $CMS_END_IF$
$CMS_ELSE$
  null
$CMS_END_IF$
$CMS_END_SET$

Klappt nicht, wirft aber auch keinen Fehler:
$CMS_SET(set_kat)$
$CMS_IF(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().getForm().findEditor("st_kat_news") != null)$
  $CMS_IF(!ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_kat_news").isEmpty && !ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_kat_news").isNull)$
   $CMS_VALUE(ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_kat_news").get())$
  $CMS_ELSE$
   empty
  $CMS_END_IF$
$CMS_ELSE$
  null
$CMS_END_IF$
$CMS_END_SET$



Fehler:

ERROR 20.08.2014 13:44:38.020{g-node=48940} (de.espirit.firstspirit.generate.SiteProduction): Must provide a valid editor value and language!
inside of: Template 'Seitenreferenzen' (id=48939)
inside of: $CMS_TRIM(level:3)$ - at 1, 1
inside of: $CMS_RENDER(template:st_render, folder:st_pagereferenz.get())$ - at 7, 1
inside of: Format Template 'seitenreferenz_news' (id=48942)
inside of: $CMS_FOR( media, folder.getChildren(class("de.espirit.firstspirit.access.store.sitestore.PageRef"), true) )$ - at 2, 1
inside of: $CMS_IF( MediaRef.toString.trim() == "/de/news/uebersicht.xhtml" )$ - at 83, 2
inside of: $CMS_TRIM(level:3)$ - at 85, 73
inside of: $CMS_VALUE(set_teaserbild)$ - at 85, 92
inside of: $CMS_IF( ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().getForm().findEditor("st_bild_news") != null )$ - at 47, 2
inside of: $CMS_IF(  ! ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null, "st_bild_news").isEmpty &&  ! ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null, "st_bild_news").isNull )$ - at 48, 3

java.lang.IllegalArgumentException: Must provide a valid editor value and language!
at de.espirit.firstspirit.client.access.editor.ValueChangeInjector.<init>(ValueChangeInjector.java:32)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.createValueChangeInjector(AbstractEditorValue.java:599)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.listenTo(AbstractEditorValue.java:566)
at de.espirit.firstspirit.client.access.editor.AbstractEditorValue.get(AbstractEditorValue.java:557)
at de.espirit.firstspirit.client.access.editor.ReferenceEditorValueImpl.get(ReferenceEditorValueImpl.java:79)
at de.espirit.firstspirit.client.access.editor.ReferenceEditorValueImpl.get(ReferenceEditorValueImpl.java:63)
at de.espirit.firstspirit.store.access.DataWrappingFormData$EditorValueWrappingFormField.get(DataWrappingFormData.java:177)
at de.espirit.firstspirit.store.access.DataWrappingFormData$EditorValueWrappingFormField.isEmpty(DataWrappingFormData.java:167)
at FormField_isEmpty_1730.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:957)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:475)
at de.espirit.firstspirit.parser.eval.Invoker.resolveAttribute(Invoker.java:440)
at de.espirit.firstspirit.parser.eval.Invoker.getAttribute(Invoker.java:233)
at de.espirit.firstspirit.parser.EvaluatorImpl$1.getProperty(EvaluatorImpl.java:83)
at de.espirit.firstspirit.parser.EvaluatorImpl.getAttribute(EvaluatorImpl.java:198)
at de.espirit.firstspirit.parser.impl.Attribute.eval(Attribute.java:20)
at de.espirit.firstspirit.parser.impl.DottedExpression.eval(DottedExpression.java:72)
at de.espirit.firstspirit.parser.impl.NotExpression.eval(NotExpression.java:23)
at de.espirit.firstspirit.parser.impl.CombinedExpression.eval(CombinedExpression.java:208)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:87)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.eval.PrintableEnhancer.print(PrintableEnhancer.java:25)
at PrintableEnhancer_print_Printable_132.invoke(Unknown Source)
at de.espirit.firstspirit.parser.eval.Invoker$MethodWrapperImpl.invoke(Invoker.java:957)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:475)
at de.espirit.firstspirit.parser.eval.Invoker.invokeMethod(Invoker.java:407)
at de.espirit.firstspirit.parser.eval.Invoker.evalMethod(Invoker.java:214)
at de.espirit.firstspirit.parser.EvaluatorImpl$1.invokeMethod(EvaluatorImpl.java:86)
at de.espirit.firstspirit.parser.EvaluatorImpl.invokeMethod(EvaluatorImpl.java:203)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:224)
at de.espirit.firstspirit.parser.impl.CmsValueImpl.print(CmsValueImpl.java:69)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.CmsTrimImpl.print(CmsTrimImpl.java:165)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.CmsIfImpl.print(CmsIfImpl.java:89)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.CmsForImpl$LoopEvaluator.eval(CmsForImpl.java:259)
at de.espirit.firstspirit.parser.impl.CmsForImpl$LoopEvaluator.access$100(CmsForImpl.java:164)
at de.espirit.firstspirit.parser.impl.CmsForImpl.print(CmsForImpl.java:144)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.CmsRenderImpl.print(CmsRenderImpl.java:68)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.impl.CmsTrimImpl.print(CmsTrimImpl.java:165)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.parser.impl.AbstractPrintable.print(AbstractPrintable.java:81)
at de.espirit.firstspirit.parser.EvaluatorImpl.print(EvaluatorImpl.java:480)
at de.espirit.firstspirit.store.access.sitestore.PageRefImpl.render(PageRefImpl.java:936)
at de.espirit.firstspirit.store.access.sitestore.PageRefImpl.createContent(PageRefImpl.java:894)
at de.espirit.firstspirit.generate.SiteProduction.generateFile(SiteProduction.java:271)
at de.espirit.firstspirit.generate.SiteProduction.generateFiles(SiteProduction.java:220)
at de.espirit.firstspirit.generate.SiteProduction.render(SiteProduction.java:197)
at de.espirit.firstspirit.generate.SiteProduction.render(SiteProduction.java:149)
at de.espirit.firstspirit.generate.SiteProduction.render(SiteProduction.java:152)
at de.espirit.firstspirit.generate.SiteProduction.start(SiteProduction.java:119)
at de.espirit.firstspirit.server.scheduler.GenerateTaskExecutor.run(GenerateTaskExecutor.java:241)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2174)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.executeLocal(ScheduleManagerImpl.java:2157)
at de.espirit.firstspirit.server.scheduler.ScheduleManagerImpl$TaskCallable.call(ScheduleManagerImpl.java:2085)
at de.espirit.firstspirit.server.ExecutionManagerImpl$ExtendedCallable.call(ExecutionManagerImpl.java:549)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at de.espirit.common.util.BoundedExecutorService$RunnableWrapper.run(BoundedExecutorService.java:419)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
at de.espirit.common.util.SuspendableThread.run(SuspendableThread.java:37)

0 Kudos
1 Solution

Accepted Solutions
jan-tilo
I'm new here

Hallo Petra,

Du musst eine Sprache beim Auslesen der Felder angeben.

Die bekommst Du einfach über das Objekt #global.language.

Viele Grüße

Jan Tilo

View solution in original post

0 Kudos
4 Replies
jan-tilo
I'm new here

Hallo Petra,

Du musst eine Sprache beim Auslesen der Felder angeben.

Die bekommst Du einfach über das Objekt #global.language.

Viele Grüße

Jan Tilo

0 Kudos
Hewera-Harz
Returning Observer

Für die Ausgabe der Werte der FS_LIST habe ich nun eine Lösung.

Hab  mir die Anregung bei einem anderen Post holen können.

$CMS_SET(set_kat2, ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(null,"st_kat_news").get())$

$CMS_FOR(entry, set_kat2)$

    $CMS_VALUE(entry.cs_kat)$

$CMS_END_FOR$

Das klappt jetzt.

Gruß

Petra Hewera-Harz

0 Kudos

Hallo Jan Tilo,

da wir kein mehrsprachiges Projekt haben, setzen wir in den Formularen immer das Attribut useLanguages="no" ein.

Mein Kenntnisstand ist, dass wenn die Sprache keine Rolle spielt (da es nur eine gibt), man bei Language den Wert null einträgt.

Vielleicht ist das bei der Reference anders. Muss ich mal ausprobieren.

Gruß

Petra Hewera-Harz

0 Kudos

Ich hab es ausprobiert und im Unterschied zu allen anderen Formularelementen spielt die Sprache bei der FS_LIST wohl eine Rolle.

Hab meine Abfrage des Wertes nun entsprechend abgeändert und nun klappt es:

$CMS_SET(set_teaserbild, ref(media).page.getBodyByName("inhalt").getFirstChild().getFormData().get(#global.language,"st_bild_news").get())$

Gruß und Besten Dank

0 Kudos