如何通过Java将XPage用户重定向到另一个页面

如何通过Java将XPage用户重定向到另一个页面,java,xpages,Java,Xpages,在XPages内部,我使用一些控制器类将XPages的beforePageLoad()事件绑定到Java方法 在这个方法中,我想将用户重定向到不同的网页。它起作用了。。但它在控制台上抛出了大量错误 public void beforePageLoad() throws Exception { Map<String, String> param = (Map<String, String>) XSPUtil.resolveVariable("param")

在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");
}
public void beforePageLoad()引发异常{
Map param=(Map)XSPUtil.resolveVariable(“param”);
如果(!参数containsKey(“参展商ID”)){
System.out.println(“重定向”);
FacesContext fc=FacesContext.getCurrentInstance();
ExternalContext ExternalContext=fc.getExternalContext();
XSPContext context=XSPContext.getXSPContext(fc);
redirectToPage(“/test.xsp”);
}
这是基本的代码。我已经尝试使用externalContext…这个示例显示了XSPContext。所以我不知道如何做

绑定到事件不是问题。这很好。它只是使用Java中的事件重定向到另一个页面。 我收到的一些信息是:

2015年2月9日下午1:06:引发异常 上下文路径:/coms/exhibitor.nsf 页面名称:/home.xsp javax.faces.el.EvaluationException:com.ibm.xsp.acl.RedirectSignal 位于com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:142) 在com.ibm.xsp.component.UIViewRootEx.initBeforeContents(UIViewRootEx.java:1621)上 位于com.ibm.xsp.page.compiled.AbstractCompiledPage.initComponent(AbstractCompiledPage.java:333) 位于com.ibm.xsp.page.compiled.AbstractCompiledPage.createTree(AbstractCompiledPage.java:256) 位于com.ibm.xsp.page.compiled.AbstractCompiledPage.createViewRoot(AbstractCompiledPage.java:167) 位于com.ibm.xsp.application.ViewHandlerExImpl.\u createViewRoot(ViewHandlerExImpl.java:521) 位于com.ibm.xsp.application.ViewHandlerExImpl.createViewRoot(ViewHandlerExImpl.java:567) 位于com.ibm.xsp.application.ViewHandlerExImpl.doCreateView(ViewHandlerExImpl.java:142) 位于com.ibm.xsp.application.ViewHandlerEx.createView(ViewHandlerEx.java:90) 位于frostillicus.controller.ControllingViewHandler.createView(ControllingViewHandler.java:89) 位于com.ibm.xsp.webapp.FacesServlet.serviceView(FacesServlet.java:251) 位于com.ibm.xsp.webapp.FacesServletEx.serviceView(FacesServletEx.java:157) 位于com.ibm.xsp.webapp.FacesServlet.service(FacesServlet.java:160) 位于com.ibm.xsp.webapp.FacesServletEx.service(FacesServletEx.java:138) 位于com.ibm.xsp.webapp.DesignerFaceServlet.service(DesignerFaceServlet.java:103) 位于com.ibm.designer.runtime.domino.adapter.ComponentModule.invokeServlet(ComponentModule.java:576) 位于com.ibm.domino.xsp.module.nsf.NSFComponentModule.invokeServlet(NSFComponentModule.java:1335) 位于com.ibm.designer.runtime.domino.adapter.ComponentModule$AdapterInvoker.invokeServlet(ComponentModule.java:853) 位于com.ibm.designer.runtime.domino.adapter.ComponentModule$ServletInvoker.doService(ComponentModule.java:796) 位于com.ibm.designer.runtime.domino.adapter.ComponentModule.doService(ComponentModule.java:565) 位于com.ibm.domino.xsp.module.nsf.NSFComponentModule.doService(NSFComponentModule.java:1319) 位于com.ibm.domino.xsp.module.nsf.NSFService.doServiceInternal(NSFService.java:662) 位于com.ibm.domino.xsp.module.nsf.NSFService.doService(NSFService.java:482) 位于org.openntf.domino.xsp.adapter.OpenntfHttpService.doService(OpenntfHttpService.java:86) 位于com.ibm.designer.runtime.domino.adapter.LCDEnvironment.doService(LCDEnvironment.java:357) 位于com.ibm.designer.runtime.domino.adapter.LCDEnvironment.service(LCDEnvironment.java:313) 位于com.ibm.domino.xsp.bridge.http.engine.XspCmdManager.service(XspCmdManager.java:272) 原因:com.ibm.xsp.acl.RedirectSignal 位于com.ibm.xsp.designer.context.XSPContext.renderPage(XSPContext.java:194) 位于com.ibm.xsp.designer.context.XSPContext.redirectToPage(XSPContext.java:917) 位于com.ibm.xsp.designer.context.XSPContext.redirectToPage(XSPContext.java:929) 在controller.home.beforePageLoad(home.java:44)中 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:60) 在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:37)中 位于java.lang.reflect.Method.invoke(Method.java:611)
在com.sun.faces.el.MethodBindingImpl.invoke(MethodBindingImpl.java:138)上,这不是错误。只是通知其他进程的异常。通常,SSJS处理器使用此命令停止代码的进一步处理

你可以忽略这一点:

try {
    context.redirectToPage("/test.xsp");
} catch (RedirectSignal rs) {
    // Ignoring this error. Useless!
}

嗯,我必须尝试一下,因为我有时会使用它…谢谢Serdar!效果很好!谢谢!!我应该注意,您需要为此添加一个导入:import com.ibm.xsp.acl.RedirectSignal;