2015-10-13 80 views
0

我在执行某个操作后将用户重定向到主页时出现问题。我搜索了stackoverflow并找到了许多解决方案,特别是@BalusC,但他们都不适合我。p:remoteCommand不能正常工作后重定向

pageA的 - remoteCommand:

<p:remoteCommand name="submit" process="@this" action="#{beanA.submitForm}"/> 

pageA的 - 提交按钮,签署内容

<p:commandButton value="Sign data" id="sign" actionListener="#{beanA.signData}" global="false" styleClass="button" /> 

用户点击后调用模态对话框COMMANDBUTTON有是在豆正在运行的一些数据逻辑,模态对话框用自己的bean调用,并从那里调用p:remoteCommand:

RequestContext.getCurrentInstance().execute("submit()");  

String message = "Redirect successfuly done!"; 

FacesContext context = FacesContext.getCurrentInstance(); 
FacesMessage facesMessage = new FacesMessage(FacesMessage.SEVERITY_INFO, "INFO:" , message); 

context.addMessage("form:h_m", facesMessage); // h:message on landing page waiting for message 

externalContext.getFlash().setKeepMessages(true); 

return "/view.xhtml?faces-redirect=true&includeViewParams=true"; 

H:消息view.xhtml:

<h:form id="form"> 
<div id="divs"> 
    <div id="top"> 
    <h:message id="h_m"/>  
    ..... 
    ..... 
    </div> 
</div> 
</h:form> 

长话短说 - 当用户按下提交按钮(调用对话框),模态对话框弹出,用户再次点击提交按钮,有一定的逻辑是处理,然后调用remoteCommand并弹出关闭。这就是时刻重定向应该做的事,但弹出关闭后没有任何反应,只是错误:

06:55:09,707 ERROR [ExceptionHandlerAjaxImpl:68] null 
javax.faces.FacesException 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:89) 
    at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) 
    at com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) 
    at com.liferay.faces.bridge.internal.BridgePhaseResourceImpl.execute(BridgePhaseResourceImpl.java:271) 
    at com.liferay.faces.bridge.internal.BridgeImpl.doFacesRequest(BridgeImpl.java:157) 
    at javax.portlet.faces.GenericFacesPortlet.serveResource(GenericFacesPortlet.java:178) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:122) 
    at com.liferay.portlet.ScriptDataPortletFilter.doFilter(ScriptDataPortletFilter.java:82) 
    at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:116) 
    at com.liferay.portal.kernel.portlet.PortletFilterUtil.doFilter(PortletFilterUtil.java:71) 
    at com.liferay.portal.kernel.servlet.PortletServlet.service(PortletServlet.java:112) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 
    at com.liferay.portlet.InvokerPortletImpl.invoke(InvokerPortletImpl.java:580) 
    at com.liferay.portlet.InvokerPortletImpl.invokeResource(InvokerPortletImpl.java:675) 
    at com.liferay.portlet.InvokerPortletImpl.serveResource(InvokerPortletImpl.java:441) 
    at com.liferay.portlet.PortletContainerImpl._doServeResource(PortletContainerImpl.java:792) 
    at com.liferay.portlet.PortletContainerImpl.serveResource(PortletContainerImpl.java:152) 
    at com.liferay.portlet.SecurityPortletContainerWrapper.serveResource(SecurityPortletContainerWrapper.java:166) 
    at com.liferay.portlet.RestrictPortletContainerWrapper.serveResource(RestrictPortletContainerWrapper.java:166) 
    at com.liferay.portal.kernel.portlet.PortletContainerUtil.serveResource(PortletContainerUtil.java:164) 
    at com.liferay.portal.action.LayoutAction.processLayout(LayoutAction.java:386) 
    at com.liferay.portal.action.LayoutAction.doExecute(LayoutAction.java:200) 
    at com.liferay.portal.action.LayoutAction.execute(LayoutAction.java:95) 
    at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:431) 
    at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:236) 
    at com.liferay.portal.struts.PortalRequestProcessor.process(PortalRequestProcessor.java:178) 
    at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196) 
    at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 
    at com.liferay.portal.servlet.MainServlet.callParentService(MainServlet.java:549) 
    at com.liferay.portal.servlet.MainServlet.service(MainServlet.java:526) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:46) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 
    at com.liferay.portal.servlet.FriendlyURLServlet.service(FriendlyURLServlet.java:156) 
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:116) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.gzip.GZipFilter.processFilter(GZipFilter.java:123) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.secure.SecureFilter.processFilter(SecureFilter.java:293) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.i18n.I18nFilter.processFilter(I18nFilter.java:243) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.jsoncontenttype.JSONContentTypeFilter.processFilter(JSONContentTypeFilter.java:46) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.autologin.AutoLoginFilter.processFilter(AutoLoginFilter.java:267) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.sso.ntlm.NtlmPostFilter.processFilter(NtlmPostFilter.java:83) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.sharepoint.SharepointFilter.processFilter(SharepointFilter.java:88) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.BaseFilter.processFilter(BaseFilter.java:169) 
    at com.liferay.portal.servlet.filters.virtualhost.VirtualHostFilter.processFilter(VirtualHostFilter.java:226) 
    at com.liferay.portal.kernel.servlet.BaseFilter.doFilter(BaseFilter.java:59) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96) 
    at org.tuckey.web.filters.urlrewrite.UrlRewriteFilter.doFilter(UrlRewriteFilter.java:738) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDoFilter(InvokerFilterChain.java:204) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:109) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:165) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.processDirectCallFilter(InvokerFilterChain.java:185) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilterChain.doFilter(InvokerFilterChain.java:96) 
    at com.liferay.portal.kernel.servlet.filters.invoker.InvokerFilter.doFilter(InvokerFilter.java:96) 
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408) 
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023) 
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) 
    at java.lang.Thread.run(Unknown Source) 
Caused by: java.lang.NullPointerException 
    at com.liferay.faces.bridge.context.internal.BridgeContextImpl.encodeRedirectURL(BridgeContextImpl.java:299) 
    at com.liferay.faces.bridge.context.internal.ExternalContextCompat_2_0_Impl.encodeRedirectURL(ExternalContextCompat_2_0_Impl.java:125) 
    at com.sun.faces.application.view.MultiViewHandler.getRedirectURL(MultiViewHandler.java:372) 
    at javax.faces.application.ViewHandlerWrapper.getRedirectURL(ViewHandlerWrapper.java:202) 
    at com.liferay.faces.bridge.application.internal.ViewHandlerCompatImpl.getRedirectURL(ViewHandlerCompatImpl.java:87) 
    at com.sun.faces.application.NavigationHandlerImpl.handleNavigation(NavigationHandlerImpl.java:164) 
    at com.liferay.faces.bridge.application.internal.BridgeNavigationHandlerImpl.handleNavigation(BridgeNavigationHandlerImpl.java:66) 
    at com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:129) 
    at javax.faces.component.UICommand.broadcast(UICommand.java:315) 
    at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:786) 
    at javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1251) 
    at com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 
    ... 134 more 

没有行动,我不知道为什么是URL空?

编辑 - 配置:

Liferay 6.2 CE GA3
Primefaces 5.2
Liferay Faces 3.2.5-ga6

+0

您可以加入所有相关的XHTML。可能有助于发现问题。 – bwright

+0

我编辑了一点,但我认为这不会帮助你 - 它非常简单,两个xhtml页面与远程命令和着陆页与h:消息,等待消息显示 –

+0

你正在谈论一些提交按钮/按钮?,但我不知道它在哪里,什么叫。 – bwright

回答

1

这是方式的错误,Liferay的面孔桥不阿贾克斯在3.2.5-ga6(最有可能以前的版本)重定向。我为此打开了一张票(FACES-2485)。如果可能,我建议您使用非Ajax重定向来解决此问题。只需添加ajax="false"到任何command组件调用您的重定向:

<p:commandButton action="#{bean.methodWithRedirect}" ajax="false" />