pbender
I'm new here

GomIncludeValueProvider<T> Key Value?

Hallo Community,

ich verwende das GomIncludeValueProvider Interface, um eine CMS_INPUT_COMBOBOX mit Werten zu befüllen. Das ganze funktioniert auch wunderbar. Nun das Problem bzw. Unklarheit. Das Interface ist folgendermaße definiert:

StringgetKey(T value) 
           Return a unique key for a specific value.
Class<T>getType() 
           The generic content type (see List<T> getValues(UserService) and String getKey(T)).
List<T>getValues(SpecialistsBroker broker) 
           Get the list of included values.
List<T>getValues(UserService userService) 
           Deprecated. since 4.2.400 Use GomIncludeValueProvider.getValues(SpecialistsBroker) instead.

Die Option-Labels in der ComboBox werden über die getKey(T value)-Methode geholt. Warum werden die Keys anstatt den Values als Label angezeigt? Ist mit den Values der eigentliche Key gemeint und mit "unique key for a specific value" das eigentliche Label?

Verwendet wird die FS Version 4.2.478.53494.

Hier ein Beispiel:

<CMS_INPUT_COMBOBOX name="test" useLanguages="yes">

    <CMS_INCLUDE_OPTIONS type="public">

      <NAME>TestValueProvider</NAME>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Test" description=""/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

public class TestValueProvider implements GomIncludeValueProvider<Integer> {

    private List<Integer> list = Arrays.asList(1,2,3,4,5,6,7,8,9);

   

    @Override public String getKey(Integer value) {

        return "Option with value " + value;

    }

    @Override public Class<Integer> getType() {

        return Integer.class;

    }

    @Override public List<Integer> getValues(UserService arg0) {

        return null;

    }

    @Override public List<Integer> getValues(SpecialistsBroker arg0) {

        return list;

    }

}

Gruß

Philipp Bender

0 Kudos
1 Reply
StefanSchulz
I'm new here

Hi,

die Beschreibung in der Dokumentation sollte eigentlich alles dazu erklären, wie die CMS_INCLUDE_OPTIONS so parameterisiert werden können, dass sie beliebigen Text als Label anzeigt. Ohne entsprechende Parameter wird tatsächlich der Key benutzt, weil der Typ der Werte und wie diese angezeigt werden sollen unbekannt ist und keine sprachabhängige Lösung bietet.

In CMS_INCLUDE_OPTIONS können sprachabhängig LABELS definiert werden. Dabei entspricht der Aufbau der bekannten Ausdrucks-Syntax wie an anderen Stellen in FirstSpirit. Ein Beispiel ist in der Dokumentation unter LABELS ebenfalls notiert. Es bezieht sich zwar auf den Type DATABASE, funktioniert aber analog auch mit PUBLIC. Der Wert wird dabei mit #item angesprochen und es können auf alle Wertetyp-spezifischen Methoden zugegriffen werden. (Bei Werten vom Typ Integer ist dies wohl nicht so ergiebig.)

Siehe: http://www.e-spirit.com/odfs42/de/vorlagenentwicklung/formular/cmsinclude/cms_include_options/public...

Falls noch Fragen übrig bleiben, gerne wieder hier.

Gruß

Stefan