Archiv des Intrexx Live! Forums

Hier sehen Sie die Foreneinträge aus dem Intrexx Live! Forum. Bis November 2016 war es das Forum für alle Fragen rund um die Software Intrexx von United Planet.
Seit November 2016 gibt es ein neues moderiertes Forum, das Intrexx Community Forum. Nutzen Sie bitte unbedingt dieses für aktuelle Fragen, Antworten und Informationen.

Wichtig: Dieses Forum dient als Archiv. Die Einträge beziehen sich oft auf ältere Versionen von Intrexx und entsprechen nicht mehr den aktuellen technischen Gegebenheiten.
Daher sollten alle Inhalte ausschließlich von Experten genutzt werden. Bei unsachgemäßer Anwendung kann es zu zeitaufwändigen Problemen oder Datenverlust kommen.
Übersicht > Intrexx Professional: Suggestions > $Portal.OrgStructure.getUser(Integer) bitte auf getUser(Long) ändern

$Portal.OrgStructure.getUser(Integer) bitte auf getUser(Long) ändern

Wenn man ein Ansichtsfeld mit einer Benutzer-ID hat, liefert das ein java.lang.Long. Wenn man den User dazu abfragen möchte (mit $Portal.OrgStructure.getUser($id)), dann schlägt das fehl. Man muss vorher die ID mit $Math.toInteger($id) zu Integer konvertieren.

Wenn Benutzer-IDs allg. als Long betrachtet werden, so sollte die Funktion $Portal.OrgStructure.getUser() das auch reflektieren, also einen Long als Parameter nehmen.

Grüßle,

Raw
08.03.2012 13:15 von Raw
Hallo Raw,

bezüglich deiner Meldung nochmal eine Nachfrage: Wie wird denn die Variable $id gefüllt/definiert? In einem TestCase hier war getUser($id) auch mit einem Long ausführbar. Ist das $id eine Zahl oder handelt es sich an der Stelle noch um einen ValueHolder?
Evtl. kannst Du das Skript ja mal posten.
Schlägt das Skript auch fehl, wenn Du $Portal.getOrgStructure().getUser() mal explizit mit einem hardcodierten Integer und Long aufrufst ($Math.toLong(value)).
Grüße, RomanB
12.03.2012 11:18 von RomanB
Hallo Roman,

die Quelle ist ein normales Eingabefeld, welches einem Integer-Feld zugewiesen ist. Als Default für das Feld wird "User Data - User ID" gewählt. Darunter kommt folgendes Skript in ein Statisches Textfeld:

#set($fieldVal = $DC.getValueHolder('textcontrol8BE7D1C4').Value)
field value = $fieldVal - Class: $fieldVal.Class.Name<br>
#set($user = $Portal.OrgStructure.getUser($fieldVal))
user = $user.FullName<br>
#set($fieldVal2 = $Math.toInteger($fieldVal))
field value 2 = $fieldVal2 - Class: $fieldVal2.Class.Name<br>
#set($user2 = $Portal.OrgStructure.getUser($fieldVal2))
user2 = $user2.FullName<br>
#set($fieldVal3 = $Math.toLong(112))
field Value 3 = $fieldVal3 - Class: $fieldVal3.Class.Name<br>
#set($user3 = $Portal.OrgStructure.getUser($fieldVal3))
user3 = $user3.FullName<br>


Ausgabe ist bspw:
field value = 112 - Class: java.lang.Long
user = $user.FullName
field value 2 = 112 - Class: java.lang.Integer
user2 = Hein Blöd
field Value 3 = 112 - Class: java.lang.Long
user3 = $user3.FullName

Die Quelle erscheint mir unerheblich, denn das Skript zeigt, dass auch bei der direkten Erzeugung eines java.lang.Long über $Math.toLong(112) die Methode $Portal.OrgStructure.getUser() das Ergebnis verweigert. Ich kann aber nicht genau sagen, ob Velocity jetzt vergeblich nach $Portal.OrgStructure.getUser(Long) gesucht hat, oder ob bei der automatischen Konvertierung von Long zu Integer etwas kaputt ging. Immerhin kommt ja zumindest keine MethodNotFoundException.

Falls noch Fragen sind, nur zu attention

[Edit] Achso, ich verwende Intrexx 5.2 mit den neuesten Flicken installiert.

Grüßle,

Raw
12.03.2012 16:01 von Raw
Übrigens gilt das gleiche für g_om in Groovy. Hier knallt es, wenn ich eine Abfrage wie
g_om.getUser(g_record["AB9...C13"].value).name
abfrage. Das abgefrage Feld ist dabei die Spalte "LUSERIDINSERT" und ergibt einen java.lang.Long. Das ganze hat diese Fehlermeldung zur Folge:

org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: de.uplanet.lucy.server.usermanager.groovy.GroovyOrgBuilder.getUser() is applicable for argument types: (java.lang.Long) values: [486]
Possible solutions: getUser(int), getUser(java.lang.String), getUser(java.lang.String, java.lang.String), isUser(java.lang.Object), createUser(groovy.lang.Closure), deleteUser(java.lang.String)

Einfügen von "(Integer)" vor "g_record[..." löst das Problem. Besser wäre aber natürlich eine Funktion g_om.getUser(long) oder g_om.getUser(java.lang.Long)

Grüßle,

Raw
16.03.2012 12:54 von Raw
Hallo Raw,

wir haben uns das intern nochmal angeschaut und sind (leider) zum gleichen Ergebnis gekommen wie Du attention
Voraussichtlich mit dem kommenden OU 07 wird der Fehler in Velocity und Groovy behoben werden. Hoffentlicht kannst Du bist dahin noch mit einem Cast als Workaround arbeiten.

Grüße, RomanB
19.03.2012 14:15 von RomanB
Grüß dich, RomanB,

Oh, ich kann mit der Umarbeitung erstmal bestens leben. Jetzt wo ich weiß, warum meine Filter usw. nicht funktioniert haben attention kann ich das Problem ja von vorneherein vermeiden.
Ich freu mich doch, wenn ich zur Produktverbesserung beitragen kann attention

Grüßle,

Raw
19.03.2012 14:39 von Raw
Zurück | Alles über Intrexx | Impressum | Datenschutzerklärung

Über United Planet
© 2019 United Planet GmbH
Schnewlinstraße 2
79098 Freiburg