LotusScript in XPages
Dies ist der dritte Teil des Artikels „LotusScript in XPages“. Der erste Teil befindet sich hier, der zweite Teil hier.
Die Quick-n-Dirty-Aktivierung
Damit die BindingFactory verwendet werden kann, müsste eigentlich ein Plugin erstellt werden, doch es gibt auch eine „Abkürzung“, denn die Factory kann auch über einen angepassten ViewHandler in XPages verwendet werden. Dies ist beim Testen / Entwickeln eine sehr praktische Angelegenheit, da sich dadurch der Aufwand deutlich verringern lässt (Vielen Dank an dieser Stelle an Jesse Gallagher für seine Idee).
Der ViewHandler ist einfach aufgebaut und sieht wie folgt aus:
package ch.hasselba.xpages.jsf.el; import javax.faces.application.ViewHandler; import javax.faces.component.UIViewRoot; import javax.faces.context.FacesContext; import com.ibm.xsp.application.ApplicationEx; import com.ibm.xsp.factory.FactoryLookup; public class LSViewHandler extends com.ibm.xsp.application.ViewHandlerExImpl { public LSViewHandler(ViewHandler paramHandler) { super(paramHandler); } @SuppressWarnings({ "deprecation" }) @Override public UIViewRoot createView(FacesContext context, String paramString) { ApplicationEx app = (ApplicationEx) context.getApplication(); FactoryLookup facts = app.getFactoryLookup(); LSBindingFactory lsfac = new LSBindingFactory(); if(facts.getFactory(lsfac.getPrefix()) == null) { facts.setFactory(lsfac.getPrefix(), lsfac); } return super.createView(context, paramString); } }
Der aktuellen Application-Instanz wird hierbei die BindingFactory im createView() hinzugefügt, wenn diese noch nicht vorhanden ist, danach wird die ursprüngliche createView()-Methode der erweiterten Klasse com.ibm.xsp.application.ViewHandlerExImpl aufgerufen.
Dann muss nur noch die faces-config.xml modifiziert und der neue ViewHandler eingetragen werden:
<?xml version="1.0" encoding="UTF-8"?> <faces-config> <application> <view-handler>ch.hasselba.xpages.jsf.el.LSViewHandler</view-handler> </application> </faces-config>
Nun kann in der XPage mit dem neuen „lotusscript“-Tag experimentiert werden. Da der Designer den neuen Tag nicht kennt, wird immer eine Warnung ausgegeben werden bzw. die Syntax mit einem Ausufezeichen markiert:
Dies stellt aber (zumindest unter 8.5.3) kein Problem dar, ist aber erst durch eine „saubere“ Plugin-Lösung behebbar.
In den nächsten Teilen wird die Plugin-Variante vorgestellt, und ein paar Erweiterungsmöglichkeiten für den LotusScript-Wrapper gezeigt.
Pingback: LotusScript in XPages (2): LotusScript-Wrapper | blog@hasselba.ch
Great series, Sven. I wish this were in English so that many more people could easier consume this.
In any case this would be a great submission to the OpenNTF development contest.
Can share This example database?
I agree to Niclas that if you were writing in english more people would read your great articles. But fortunately for me because I don’t know German I use Rockmelt a chrome based browser so I get your site auto translated (or almost) to English 😉
Keep up the good work Sven!!
This is absolutely great, Sven. Thanks for sharing.
Would you mind, if I show this solution in my DanNotes presentation next month?
Feel free to show this. But don’t forget the credits 😉
P.S.
I am from Wiesbaden, Germany. Not from switzerland.