l_lueers
I'm new here

Abfragen eines QUERY PARAM Wertes einer CMS_INPUT_CHECKBOX

Hallo Community,

Ich bin gerade dabei, in einem Modul eine CMS_INPUT_CHECKBOX vom typ "database" auszuwerten.

Wir bauen dynamisch ein Checkbox-Formular aus einem parametrisierten Query zusammen.

Im Modul möchte ich gerne den gesetzten Parameter-Wert für den Query aus der Eingabekomponente ermitteln.

Bis zum Parameter komme ich auch, allerdings ist der Wert darin nicht gesetzt:

Hier die CMS_INPUT_CHECKBOX, implementiert in einer Linkvorlage:

<CMS_INPUT_CHECKBOX name="lt_branches" gridWidth="3" hFill="yes" noBreak="yes" useLanguages="no">

      <CMS_INCLUDE_OPTIONS type="database">

        <LABELS>

          <LABEL lang="*">#item.name</LABEL>

        </LABELS>

        <QUERY name="main.manifestations_for_dimension">

          <PARAM name="dimensionId">S</PARAM>

        </QUERY>

        <TABLE>main.manifestation</TABLE>

      </CMS_INCLUDE_OPTIONS>

      <LANGINFOS>

        <LANGINFO lang="*" label="Sparten"/>

      </LANGINFOS>

</CMS_INPUT_CHECKBOX>

Im Modul frage ich sie dann wie folgt ab:

Language lang = this.context.getProject().getMasterLanguage();

GomCheckbox dimGomForm = (GomCheckbox) targetGroupLink.getFormData().getForm().findEditor("lt_branches");

ContentOptionModel optionModel = (ContentOptionModel) dimGomForm.getOptionFactory().getOptionModel(this.context, lang, false);

String dimensionID = (String) optionModel.getQuery().getSelectStatement().getParameterValue("dimensionId");

Leider ist der Wert in in dimensionID null.

Der Parameter selbst wird gefunden. Die Ausgabe von:

LOGGER.info("parameters are ("+StringUtils.join(optionModel.getQuery().getSelectStatement().getParameters().toArray(), ", ")+")");

liefert mir:

"parameters are (dimensionId)"

Es sieht so aus, als ob die Funktion getParameterValue() der zugrunde liegenden Impl Klasse de.espirit.or.impl.SelectImpl kein korrektes Ergebnis liefert. Oder spreche ich die API falsch an?

Getestet habe ich es mit den FS-Versionen

5.2.311

5.2.424

5.2.426

Java-Vesion:

1.8.0_74

0 Kudos
2 Replies
pavone
I'm new here

Hallo Lenz,

die Methoden & Interfaces, die du verwendest, gehören meines Wissens größtenteils nicht zur offiziellen FirstSpirit API, weshalb es keinerlei Garantie gibt, dass sich daran nichts ändern wird.

Wäre es eine Option für dich, einfach die Formulardefinition der Linkvorlage auszuwerten und über eine passende RegEx den Parameterwert herauszufinden?

LinkTemplate implementiert GomSourceProvider, welches die Methode getGomSource beinhaltet. Darüber kommst du an die Formulardefinition

Viele Grüße

Tim

Hallo Tim,

Danke für den Tipp. Das ist auf jeden Fall ein Workaround.

Zu dem Code: Die verwendeten Funktionen sind (nahezu) ausschließlich aus der offiziellen Access-API.

Einzig der Cast des OptionModel in ein ContentOptionModel ist nicht offizieller Teil der API.

Die betreffende Funktion getParameterValue() aus dem Interface de.espirit.or.query.Select, welche den Null Wert liefert, ist ebenfalls Teil der offiziellen API.

Danke und viele Grüße,

Lenz

0 Kudos