在XPages中,我使用一些控制器类将XPages的beforePageLoad()事件绑定到Java方法.
在这种方法中,我想将用户重定向到不同的网页.它工作..但它在控制台上抛出了大量的错误.
public void beforePageLoad() throws Exception {
Map<String, String> param = (Map<String, String>) XSPUtil.resolveVariable("param");
if (!param.containsKey("exhibitorId")) {
System.out.println("Redirecting");
FacesContext fc = FacesContext.getCurrentInstance();
ExternalContext externalContext = fc.getExternalContext();
XSPContext context = XSPContext.getXSPContext(fc);
context.redirectToPage("/test.xsp");
}
Run Code Online (Sandbox Code Playgroud)
这是基本代码..我尝试过使用externalContext ...这个示例显示了XSPContext.所以我只是不确定该怎么做.
绑定到事件不是问题.那工作得很好.它只是使用Java中的事件重定向到另一个页面.我得到的一些消息是:
2/9/15 1:06 PM:Exception Thrown Context Path:/coms/exhibitor.nsf页面名称:/home.xsp javax.faces.el.EvaluationException:com.sib中的com.ibm.xsp.acl.RedirectSignal. face.el.MethodBindingImpl.invoke(MethodBindingImpl.java:142)at com.ibm.xsp.component.UIViewRootEx.initBeforeContents(UIViewRootEx.java:1621)at com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(AbstractCompiledPage. java.333)com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(AbstractCompiledPage.java:256)at com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(AbstractCompiledPage.java:167)at com.ibm位于com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:567)的com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java)中的.xsp.application.ViewHandlerExImpl._createViewRoot(ViewHandlerExImpl.java:521) :142)在frostillicus.controller.ControllingViewHandler.createView(Controlli)的com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90)ngViewHandler.java:89)com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251)com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157)com.ibm.xsp的com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251)位于com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138)的.webapp.FacesServlet.service(FacesServlet.java:160)位于com.ibm.xsp.webapp.DesignerFacesServlet.service(DesignerFacesServlet.java:103) )com的com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576)com的com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335). com中的com.ibm.designer.runtime.domino.adapter.ComponentModule $ ServletInvoker.doService(ComponentModule.java:796)中的ibm.designer.runtime.domino.adapter.ComponentModule $ AdapterInvoker.invokeServlet(ComponentModule.java:853).位于com.ib的com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319)的ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565)m.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662)位于org.openntf.domino的com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482).位于com.ibm.designer.runtime.domino.adapter的com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357)的xsp.adapter.OpenntfHttpService.doService(OpenntfHttpService.java:86). LCD环境服务(LCDEnvironment.java:313)位于com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272)引起:com的com.ibm.xsp.acl.RedirectSignal. ibm.xsp.designer.context.XSPContext.renderPage(XSPContext.java:194)位于com.ibm.xsp.designer.context的com.ibm.xsp.designer.context.XSPContext.redirectToPage(XSPContext.java:917). XSPContext.redirectToPage(XSPContext.java:929)位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60)的sun.reflect.NativeMethodAccessorImpl.invoke0(本地方法)的controller.home.beforePageLoad(home.java:44)处.在sun.reflect.Delegat ingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)at java.lang.reflect.Method.invoke(Method.java:611)at com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:138)
这不是错误.通知其他进程只是一个例外.通常,SSJS处理器使用它来停止进一步处理代码.
你可能会忽略这一点:
try {
context.redirectToPage("/test.xsp");
} catch (RedirectSignal rs) {
// Ignoring this error. Useless!
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1356 次 |
| 最近记录: |