Questions & Answers

SOLVED
pschulz
I'm new here

Innerhalb eines GomIncludeValueProvider den angemeldeten User abfragen

Jump to solution

Moin,

ich habe einen GomIncludeValueProvider implementiert.

Der funktionier soweit auch ganz gut.

Nun wรผrde ich aber gerne innerhalb der Methode "public List<T> getValues(SpecialistsBroker broker)"

den angemeldeten User abfragen, um damit dann die zurรผckzugebende Liste einzuschrรคnken.

Wenn ich in dieser Methode folgende Zeile einfรผge

UserService service = broker.requireSpecialist(ServicesBroker.TYPE).getService(UserService.class);

bekomme ich im FirstSpirit-Client folgende Fehlermeldung:

"Fehler in der Vorlage 'xxx'. Der ausgewรคhlte Inhalt kann nicht angezeigt werden.

Grund: Der Service 'de.espirit.firstspirit.access.UserService' ist nicht gestartet."

Was mache ich falsch?

GruรŸ

Peter

0 Kudos
1 Solution

Accepted Solutions
Peter_Jodeleit
Crownpeak employee

"UserService" ist nicht รผber den "ServicesBroker" erreichbar, die Fehlermeldung ist da tatsรคchlich verwirrend.

Den aktuellen Benutzer bekommst du so:

User user = broker.requireSpecialist(UserAget.TYPE).getUser();

GruรŸ, Peter


Peter

View solution in original post

0 Kudos
13 Replies
Peter_Jodeleit
Crownpeak employee

"UserService" ist nicht รผber den "ServicesBroker" erreichbar, die Fehlermeldung ist da tatsรคchlich verwirrend.

Den aktuellen Benutzer bekommst du so:

User user = broker.requireSpecialist(UserAget.TYPE).getUser();

GruรŸ, Peter


Peter
0 Kudos

Hi Peter,

besten Dank!

So passt es.

GruรŸ

Peter

0 Kudos

Hallo,

wir haben jetzt das Problem dass wir den User zwar erhalten - sobald wir diesen verwenden aber nicht wie erwartet

"de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeOptions$GenericOption" von einer CMS_INPUT_COMBOBOX bekommen.

Sobald man das User-Objekt verwendet bekommt man hier "de.espirit.firstspirit.access.editor.value.SimpleOption" und damit als value nur noch den String zurรผck..

Was lรคuft hier falsch bzw. was machen wir falsch? Ich habe einmal ein Test-Beispiel angehรคngt, dass das Ergebnis zeigen sollte..

Viele GrรผรŸe,

Torben

0 Kudos

Das Beispiel liefert keine User-Instanzen, sondern eine innere Klasse "SampleBean".

Wahrscheinlich verstehe ich das Problem nicht... Smiley Wink

Peter
0 Kudos

Okay: Gemeint ist der Rรผckgabewert in einem Formular:

  <CMS_INPUT_COMBOBOX name="st_registrationlist3" useLanguages="no">

    <CMS_INCLUDE_OPTIONS type="public">

      <NAME>com.hamburgsud.firstspirit.pub.SampleValueProvider</NAME>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Auswahl" description="TEXT"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

Hier liefert dann ein $CMS_VALUE(st_registrationlist3.class)$ im guten Fall "de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeOptions$GenericOption"

im schlechten Fall

"de.espirit.firstspirit.access.editor.value.SimpleOption"

๐Ÿ˜ž

0 Kudos

Da das Verhalten der API hier eher unerwartet ist: Soll ich hierfรผr zur Klรคrung besser ein Ticket beim Helpdesk aufmachen?

0 Kudos

Bevor wir ein Ticket beim Helpdesk aufmachen, versuche ich es nochmal zu erklรคren.

Der SampleValueProvider wird im Formular wie folgt eingebunden:

  <CMS_INPUT_COMBOBOX name="st_registrationlist3" useLanguages="no">

    <CMS_INCLUDE_OPTIONS type="public">

      <NAME>com.hamburgsud.firstspirit.pub.SampleValueProvider</NAME>

    </CMS_INCLUDE_OPTIONS>

    <LANGINFOS>

      <LANGINFO lang="*" label="Auswahl" description="TEXT"/>

    </LANGINFOS>

  </CMS_INPUT_COMBOBOX>

Das klappt an sich auch.

Das Problem taucht erst in der Ausgabe auf ( im Beispiel durch $CMS_VALUE(st_registrationlist3.class)$ verdeutlicht).

Wenn aus der bereits angehรคngten Javaklasse die Zeile 31 statt 34 ausgefรผhrt wird

result.add(new SampleBean("BLUB"));

wird im Formular "BLUB" angezeigt und in der Ausgabe steht dann

de.espirit.firstspirit.access.store.templatestore.gom.GomIncludeOptions$GenericOption

Wenn jedoch Zeile 34 statt 31 ausgefรผhrt (und somit auf den Usernamen zugegriffen) wird

result.add(new SampleBean(username));

wird im Formular korrekterweise der aktuelle Loginname angezeigt.

In der Ausgabe steht jedoch

de.espirit.firstspirit.access.editor.value.SimpleOption

Der Unterschied zwischen GenericOption und SimpleOption ist ganz einfach, dass man bei der GenericOption mittels getValue() das gewรผnschte "SampleBean" erhรคlt. Bei der SimpleOption erhรคlt man mittels getValue() lediglich einen String.

Es wรคre schรถn, wenn sich hierzu noch jemand melden kann.

Auch wenn es hier nicht gelรถst werden kann.

GruรŸ

Peter

0 Kudos

Danke fรผr die zahlreichen Antworten!

Ticket wurde aufgemacht...

0 Kudos
klein
Crownpeak employee

Hallo,

folgenden Denkfehler wurde hier von unseren Entwicklern entdeckt:

fรผr die Auswahl im Client liefert der Provider lediglich ein Objekt, nรคmlich fรผr den aktuellen Benutzer (z.B. "Admin").

Bei der Generierung ist der Benutzer aber ein anderer (Systembenutzer). Der Provider liefert in seiner Auswahlmenge nur diesen Systembenutzer, "Admin" ist somit kein unterstรผtzter Wert der Menge und daher wird ein SimpleOption-Objekt erzeugt (weil nicht entscheidbar ist, warum "Admin" nicht in der Wertemenge enthalten ist).

Deshalb also die unterschiedlichen Ausgaben bei:

result.add(new SampleBean(username));

und

result.add(new SampleBean("BLUB"));

GruรŸ,

Walter.

0 Kudos

Type a product name