2015-10-13 81 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" />