Domino 9 und frühere Versionen > ND8: Entwicklung - XPages
XPages Managed Bean
(1/1)
pippo:
Hallo,
ich habe ein Problem mit einer managed Bean die eigentlich nur den aktuellen User zurückgeben soll.
In einem Label soll der Name und die OU1 angezeigt werden was beim ersten Laden der XPage auch funktioniert.
Aktualisiere ich jedoch die Seite (über die Schaltfläche "Aktualisieren" oder indem ich irgendwohin navigiere) so scheint die Bean sämtliche Daten zu verlieren.
Fehlermeldung
Fehler beim Ausführen eines von JavaScript berechneten Ausdrucks.
Script-Interpreterfehler, Zeile=1, Spalte=18: Fehler beim Aufrufen von Methode 'getAbbreviated()' für Java-Klasse 'Test.UserInformationProviderClass'
faces-config.xml
--- Code: ---<managed-bean>
<managed-bean-class>Test.UserInformationProviderClass</managed-bean-class>
<managed-bean-name>UserInfoProvider</managed-bean-name>
<managed-bean-scope>session</managed-bean-scope>
</managed-bean>
--- Ende Code ---
Java Klasse
--- Code: ---package Test.TicketManagement;
import lotus.domino.Name;
import lotus.domino.NotesException;
import lotus.domino.Session;
import com.ibm.xsp.model.domino.DominoUtils;
public class UserInformationProviderClass {
private Name _UserName;
public UserInformationProviderClass() {
Session session = null;
try {
session = DominoUtils.getCurrentSession();
this._UserName = session.createName(session.getEffectiveUserName());
}
catch (Exception e) {
this.setUserName("");
}
}
public Name getUserName() {
return this._UserName;
}
public void setUserName(String name) {
try {
this._UserName = DominoUtils.getCurrentSession().createName(name);
} catch (Exception e) {
this._UserName = null;
}
}
public String getCanonical() {
try {
return this._UserName.getCanonical();
} catch (NotesException e) {
return "[NONAME]";
}
}
public String getAbbreviated() throws NotesException
{
if (this._UserName != null)
return this._UserName.getAbbreviated();
else
return "[NONAME]";
// try {
// return this._UserName.getAbbreviated();
// } catch (NotesException e) {
// return "[NONAME]";
// }
}
public String getCompany()
{
String company = null;
try {
company = this._UserName.getOrgUnit1();
if(company == null || company == "")
company = "[NOTALLOWED]";
return company;
}
catch (Exception e) {
return "[NOTALLOWED]";
}
}
}
XPage
<xp:label id="label2">
<xp:this.value>
<![CDATA[#{javascript:UserInfoProvider.getAbbreviated() + " (" + UserInfoProvider.getCompany() + ")"}]]>
</xp:this.value>
</xp:label>
--- Ende Code ---
Sven Hasselbach:
Du serialisierst Deine Managed Bean nicht, was für eine Bean im Sessionscope jedoch erforderlich ist. Und dazu kommt, das Notes Objekte sich nicht serialisieren lassen, daher geht das ganze schief.
Also, erstens das Interface "Serializable" implementieren, und dann die Variable _UserName in einen String ändern.
pippo:
Hallo,
vielen DANK!
so funktioniert es nun!
schönen TAG
Navigation
[0] Themen-Index
Zur normalen Ansicht wechseln