You are viewing a plain text version of this content. The canonical link for it is here.
Posted to adffaces-user@incubator.apache.org by Laurie Harper <la...@holoweb.net> on 2006/08/30 22:08:38 UTC
Conditional return from dialog
I have some views which need to be able to work both as dialogs and
as 'regular' views. I need to be able to close the dialog if the view
was opened that way, so I added a call to
RequestContext.returnFromDialog(). But when not in a dialog, this
causes an exception as shown below.
The obvious thing to do is to check if a dialog is active before
calling returnFromDialog(). I tried to do that with a guard around
the returnFromDialog() call:
rc = RequestContext.getCurrentInstance();
if (rc.getDialogService().peekView() != null)
rc.returnFromDialog(...);
but peekView() always returns null, even when in a dialog. So how do
I determine if it is necessary to call returnFromDialog()? Do I have
to track whether the view is a dialog myself, or is there some
'standard' means of querying for it?
L.
Aug 30, 2006 6:03:45 PM
org.apache.myfaces.trinidadinternal.context.DialogServiceImpl
returnFromDialog
WARNING: No 'DialogUsedRK' key available for returnFromDialog to do
the right thing!
ERROR 2006-08-30 18:03:47,527 core.ContainerBase.[Catalina].
[localhost].[/] - Error calling action method of component with id _id30
javax.faces.FacesException: Error calling action method of component
with id _id30
at org.apache.myfaces.application.ActionListenerImpl.processAction
(ActionListenerImpl.java:74)
at org.apache.shale.view.faces.ViewActionListener.processAction
(ViewActionListener.java:73)
at javax.faces.component.UICommand.broadcast(UICommand.java:106)
at javax.faces.component.UIViewRoot._broadcastForPhase
(UIViewRoot.java:90)
at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java:132)
at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues
(LifecycleImpl.java:200)
at org.apache.myfaces.lifecycle.LifecycleImpl.execute
(LifecycleImpl.java:71)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:252)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at com.foo.projility.web.auth.UserAuthenticationFilter.doFilter
(UserAuthenticationFilter.java:80)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at
org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFil
terInternal(OpenSessionInViewFilter.java:174)
at org.springframework.web.filter.OncePerRequestFilter.doFilter
(OncePerRequestFilter.java:76)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.apache.shale.faces.ShaleApplicationFilter.doFilter
(ShaleApplicationFilter.java:268)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoF
ilter(TrinidadFilterImpl.java:327)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterI
mpl(TrinidadFilterImpl.java:291)
at
org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter
(TrinidadFilterImpl.java:214)
at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter
(TrinidadFilter.java:90)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
(ApplicationFilterChain.java:202)
at org.apache.catalina.core.ApplicationFilterChain.doFilter
(ApplicationFilterChain.java:173)
at org.apache.catalina.core.StandardWrapperValve.invoke
(StandardWrapperValve.java:213)
at org.apache.catalina.core.StandardContextValve.invoke
(StandardContextValve.java:178)
at org.apache.catalina.core.StandardHostValve.invoke
(StandardHostValve.java:126)
at org.apache.catalina.valves.ErrorReportValve.invoke
(ErrorReportValve.java:105)
at org.apache.catalina.core.StandardEngineValve.invoke
(StandardEngineValve.java:107)
at org.apache.catalina.connector.CoyoteAdapter.service
(CoyoteAdapter.java:148)
at org.apache.coyote.http11.Http11Processor.process
(Http11Processor.java:856)
at org.apache.coyote.http11.Http11Protocol
$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
(PoolTcpEndpoint.java:527)
at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
(LeaderFollowerWorkerThread.java:80)
at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
(ThreadPool.java:684)
at java.lang.Thread.run(Thread.java:613)
Caused by: javax.faces.el.EvaluationException: /pages/templates/
include/pageToolbar.xhtml @54,76 action="#{view.cancel}":
java.lang.IllegalStateException: popView(): No view has been pushed.
at com.sun.facelets.el.LegacyMethodBinding.invoke
(LegacyMethodBinding.java:73)
at org.apache.myfaces.application.ActionListenerImpl.processAction
(ActionListenerImpl.java:63)
... 37 more
Caused by: java.lang.IllegalStateException: popView(): No view has
been pushed.
at
org.apache.myfaces.trinidadinternal.context.DialogServiceImpl.popView
(DialogServiceImpl.java:82)
at
org.apache.myfaces.trinidadinternal.context.DialogServiceImpl.returnFrom
Dialog(DialogServiceImpl.java:175)
at
org.apache.myfaces.trinidadinternal.context.RequestContextImpl.returnFro
mDialog(RequestContextImpl.java:123)
at com.foo.projility.web.view.PageViewController.cancel
(PageViewController.java:156)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke
(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.sun.el.parser.AstValue.invoke(AstValue.java:130)
at com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:
274)
at com.sun.facelets.el.TagMethodExpression.invoke
(TagMethodExpression.java:68)
at com.sun.facelets.el.LegacyMethodBinding.invoke
(LegacyMethodBinding.java:69)
... 38 more
--
Laurie Harper
Open Source advocate, Java geek: http://www.holoweb.net/laurie
Founder, Zotech Software: http://www.zotechsoftware.com/
Re: Conditional return from dialog
Posted by Adam Winer <aw...@gmail.com>.
Laurie,
No, there's no supported way to detect if you're in a dialog.
At best, you could add something to do the page flow
scope every time you launch a dialog (e.g., with
a dedicated launchListener). Though, this all
can get a bit funny if you use ordinary navigation
*within* a dialog to go to one of these views - at
that point, is it a dialog, or a regular view?
-- Adam
On 8/30/06, Laurie Harper <la...@holoweb.net> wrote:
>
> I have some views which need to be able to work both as dialogs and
> as 'regular' views. I need to be able to close the dialog if the view
> was opened that way, so I added a call to
> RequestContext.returnFromDialog(). But when not in a dialog, this
> causes an exception as shown below.
>
> The obvious thing to do is to check if a dialog is active before
> calling returnFromDialog(). I tried to do that with a guard around
> the returnFromDialog() call:
>
> rc = RequestContext.getCurrentInstance();
> if (rc.getDialogService().peekView() != null)
> rc.returnFromDialog(...);
>
> but peekView() always returns null, even when in a dialog. So how do
> I determine if it is necessary to call returnFromDialog()? Do I have
> to track whether the view is a dialog myself, or is there some
> 'standard' means of querying for it?
>
> L.
>
>
> Aug 30, 2006 6:03:45 PM
> org.apache.myfaces.trinidadinternal.context.DialogServiceImpl
> returnFromDialog
> WARNING: No 'DialogUsedRK' key available for returnFromDialog to do
> the right thing!
> ERROR 2006-08-30 18:03:47,527 core.ContainerBase.[Catalina].
> [localhost].[/] - Error calling action method of component with id _id30
> javax.faces.FacesException: Error calling action method of component
> with id _id30
> at org.apache.myfaces.application.ActionListenerImpl.processAction
> (ActionListenerImpl.java:74)
> at org.apache.shale.view.faces.ViewActionListener.processAction
> (ViewActionListener.java:73)
> at javax.faces.component.UICommand.broadcast(UICommand.java:106)
> at javax.faces.component.UIViewRoot._broadcastForPhase
> (UIViewRoot.java:90)
> at javax.faces.component.UIViewRoot.processDecodes(UIViewRoot.java
> :132)
> at org.apache.myfaces.lifecycle.LifecycleImpl.applyRequestValues
> (LifecycleImpl.java:200)
> at org.apache.myfaces.lifecycle.LifecycleImpl.execute
> (LifecycleImpl.java:71)
> at javax.faces.webapp.FacesServlet.service(FacesServlet.java:106)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:252)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:173)
> at com.foo.projility.web.auth.UserAuthenticationFilter.doFilter
> (UserAuthenticationFilter.java:80)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:202)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:173)
> at
> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFil
> terInternal(OpenSessionInViewFilter.java:174)
> at org.springframework.web.filter.OncePerRequestFilter.doFilter
> (OncePerRequestFilter.java:76)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:202)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:173)
> at org.apache.shale.faces.ShaleApplicationFilter.doFilter
> (ShaleApplicationFilter.java:268)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:202)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:173)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._invokeDoF
> ilter(TrinidadFilterImpl.java:327)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl._doFilterI
> mpl(TrinidadFilterImpl.java:291)
> at
> org.apache.myfaces.trinidadinternal.webapp.TrinidadFilterImpl.doFilter
> (TrinidadFilterImpl.java:214)
> at org.apache.myfaces.trinidad.webapp.TrinidadFilter.doFilter
> (TrinidadFilter.java:90)
> at
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter
> (ApplicationFilterChain.java:202)
> at org.apache.catalina.core.ApplicationFilterChain.doFilter
> (ApplicationFilterChain.java:173)
> at org.apache.catalina.core.StandardWrapperValve.invoke
> (StandardWrapperValve.java:213)
> at org.apache.catalina.core.StandardContextValve.invoke
> (StandardContextValve.java:178)
> at org.apache.catalina.core.StandardHostValve.invoke
> (StandardHostValve.java:126)
> at org.apache.catalina.valves.ErrorReportValve.invoke
> (ErrorReportValve.java:105)
> at org.apache.catalina.core.StandardEngineValve.invoke
> (StandardEngineValve.java:107)
> at org.apache.catalina.connector.CoyoteAdapter.service
> (CoyoteAdapter.java:148)
> at org.apache.coyote.http11.Http11Processor.process
> (Http11Processor.java:856)
> at org.apache.coyote.http11.Http11Protocol
> $Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
> at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket
> (PoolTcpEndpoint.java:527)
> at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt
> (LeaderFollowerWorkerThread.java:80)
> at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run
> (ThreadPool.java:684)
> at java.lang.Thread.run(Thread.java:613)
> Caused by: javax.faces.el.EvaluationException: /pages/templates/
> include/pageToolbar.xhtml @54,76 action="#{view.cancel}":
> java.lang.IllegalStateException: popView(): No view has been pushed.
> at com.sun.facelets.el.LegacyMethodBinding.invoke
> (LegacyMethodBinding.java:73)
> at org.apache.myfaces.application.ActionListenerImpl.processAction
> (ActionListenerImpl.java:63)
> ... 37 more
> Caused by: java.lang.IllegalStateException: popView(): No view has
> been pushed.
> at
> org.apache.myfaces.trinidadinternal.context.DialogServiceImpl.popView
> (DialogServiceImpl.java:82)
> at
> org.apache.myfaces.trinidadinternal.context.DialogServiceImpl.returnFrom
> Dialog(DialogServiceImpl.java:175)
> at
> org.apache.myfaces.trinidadinternal.context.RequestContextImpl.returnFro
> mDialog(RequestContextImpl.java:123)
> at com.foo.projility.web.view.PageViewController.cancel
> (PageViewController.java:156)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at sun.reflect.NativeMethodAccessorImpl.invoke
> (NativeMethodAccessorImpl.java:39)
> at sun.reflect.DelegatingMethodAccessorImpl.invoke
> (DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:585)
> at com.sun.el.parser.AstValue.invoke(AstValue.java:130)
> at com.sun.el.MethodExpressionImpl.invoke(
> MethodExpressionImpl.java:
> 274)
> at com.sun.facelets.el.TagMethodExpression.invoke
> (TagMethodExpression.java:68)
> at com.sun.facelets.el.LegacyMethodBinding.invoke
> (LegacyMethodBinding.java:69)
> ... 38 more
>
> --
> Laurie Harper
> Open Source advocate, Java geek: http://www.holoweb.net/laurie
> Founder, Zotech Software: http://www.zotechsoftware.com/
>
>
>
>