Hi
long time no post… but alas.. finally something I really like:
Have you ever had the situation, that you have a xPage which is workflow enabled, and you have (maybe) multiple servers? Some users might even use the LN client front-end on another server. The workflow sends out a mail telling the approver to approve.
Boom… the document did not yet replicate to the target server…
you do not want either of this message displayed:
what to do?
hmm.. I first tried with this, sorry, was not happy with it…
thing is: we use the same xpView for production and for archive, only the data source changes in the background. This will open the documents from the archive with such an URL:
http://server/db.nsf/%24%24OpenDominoDocument.xsp?databaseName=server!!otherDb.nsf&documentId=6496BA354B37544CC1257C680059C04B&action=openDocument
I could not get this to work..
So I had to figure out another way to intercept a “wrong” documentId.
Solution: use a phaselistener!!! (how to implement see here, kudos to Sven)
Now I only need to intercept the first phase in the JSF lifecycle, test if the supplied documentId exists and redirect:
event.getFacesContext().getExternalContext().redirect(“xpDocumentNotFound.xsp”);
event.getFacesContext().responseComplete();
I do some checks and then call redirect and responseComplete which executes immediately and does not continue with the other JSF phases