Anonymous
Not applicable

FIRST Personalization - Attribute per OR-Mapper

Moin!

Die User Credentials für die Anmeldung auf unserer Seite stammen aus einer externen Oracle DB. Diese wird über ein Datenbank-Schema schreibgeschützt in FirstSpirit eingebunden und per OR-Mapper befragt. Das klappt soweit ganz gut.

Nun sollen auch Attribute der einzelnen User aus der DB ausgelesen werden, wofür wiederum der OR-Mapper herhalten muss. Nun funktioniert das Auslesen der Attribut-Spalte, jedoch bekomme ich lediglich einen String mit dem ganzen Inhalt zurückgeliefert. Ich möchte jedoch nur eine Auswahl der darin enthaltenen Attribute ausgeben per

<fsp:userAttributes  attributes="firstname,lastname"><%= attributevalue %> </fsp:userAttributes>

Grenze ich die Auswahl so ein, wird nichts ausgegeben. Grenze ich die Auswahl nicht ein, bekomme ich den kompletten String "firstname=Test;lastname=TesterNN;address=.....;xxx=yyy;...".

Muss der in der DB hinterlegte String eine bestimmte Form besitzen, damit er korrekt zu einer Key-Value-Liste geparst werden kann? Muss ich das Parsen selbst übernehmen? Ist die Form "W=X;Y=Z" inkorrekt?

Bitte um Hilfe! In den Dokumentationen steht rein gar nichts dazu, wie die Attribute zu speichern sind.

Viele Grüße aus Hamburg,

Nils

0 Kudos
1 Reply
marro
Crownpeak employee

Das ORMapper Attribut-Modul aus FIRSTpersonalization erwartet jedes auszulesende Attribut in einer eigenen Tabellenspalte. Die auszulesenden Attribute werden bei der Konfiguration des Moduls angegeben (Parameter 'Benutzer-Attribute'). Nur die dort angegebenen Attribute können hinterher über das userAttributes-Tag ausgegeben werden. Um 'firstname' und 'lastname' einzeln auszugeben, müssen demnach Tabellenspalten mit diesem Namen existieren und die beiden Attribute im Konfigurationsfeld 'Benutzer-Attribute' des ORMapper Attribut-Moduls angegeben werden.

In Ihrem Beispiel überprüft das userAttributes-Tag, ob zu dem aktuellen Benutzer die Attribute "firstname" und "lastname" ausgelesen wurden. Diese Attribute existieren allerdings nicht, da sie nicht als eigenständige Spalten in der Datenbank angelegt wurden, wie ich aus Ihrem Beitrag schliesse. Stattdessen wird beim Weglassen der Einschränkung der komplette String ausgegeben, da in diesem Fall alle Attribute ausgegeben werden, die in der Konfiguration des Moduls angegeben wurden. Dort wird also der Name der Spalte als auszulesendes Attribut konfiguriert worden sein, die den kompletten String enthält.

Da das Modul kein automatisches Parsen der Attributwerte vornimmt, müssten sie den Inhalt der 'attributevalue'-Variablen selbst parsen.

Viele Grüße,

Donato Marro

0 Kudos