Search the FirstSpirit Knowledge Base
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
"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
"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
Hi Peter,
besten Dank!
So passt es.
Gruß
Peter
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
Das Beispiel liefert keine User-Instanzen, sondern eine innere Klasse "SampleBean".
Wahrscheinlich verstehe ich das Problem nicht...
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"
😞
Da das Verhalten der API hier eher unerwartet ist: Soll ich hierfür zur Klärung besser ein Ticket beim Helpdesk aufmachen?
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
Danke für die zahlreichen Antworten!
Ticket wurde aufgemacht...
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.