Autor Thema: XPages Managed Bean  (Gelesen 4627 mal)

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
XPages Managed Bean
« am: 22.09.14 - 16:35:16 »
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>
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>

Offline Sven Hasselbach

  • Senior Mitglied
  • ****
  • Beiträge: 316
  • Geschlecht: Männlich
    • blog@hasselba.ch
Re: XPages Managed Bean
« Antwort #1 am: 22.09.14 - 16:52:42 »
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.


Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re: XPages Managed Bean
« Antwort #2 am: 23.09.14 - 08:40:18 »
Hallo,
vielen DANK!

so funktioniert es nun!

schönen TAG

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz