On Mon, Nov 7, 2016 at 9:55 AM, Martin Grigorov <mgrigo...@apache.org> wrote:
> Hi, > > On Mon, Nov 7, 2016 at 9:44 AM, Erik de Hair <e.deh...@pocos.nl> wrote: > >> Hi, >> >> Some of our users keep complaining about unexpected exceptions so I was >> investigating what kind of exceptions occur. Now it seems it's quite easy >> to get an exception if you double click on an 'OK' button. (Some people >> still don't know where to single click or double click :-S) >> > > It is up to the application to decide how to prevent double form > submittions. > An easy way is to disable the button during Ajax call, e.g. > Wicket-Bootstrap provides integration with Ladda > <http://msurguy.github.io/ladda-bootstrap/>: http://wb-mgrigorov. > rhcloud.com/extensions#ladda > > @Dan: is it easy to decide which buttons in Isis shoud have this behavior > ? > > >> org.apache.wicket.core.request.handler.ListenerInvocationNotAllowedExceptionBehavior >> rejected interface invocation. Component: [AjaxButton [Component id = >> okButton]] Behavior: org.apache.wicket.ajax.markup. >> html.form.AjaxButton$1@2070e2d3 Listener: [RequestListenerInterface >> name=IBehaviorListener, method=public abstract void >> org.apache.wicket.behavior.IBehaviorListener.onRequest()] >> org.apache.wicket.RequestListenerInterface#invoke(RequestLis >> tenerInterface.java:237) >> org.apache.wicket.core.request.handler.ListenerInterfaceRequ >> estHandler#invokeListener(ListenerInterfaceRequestHandler.java:250) >> org.apache.wicket.core.request.handler.ListenerInterfaceRequ >> estHandler#respond(ListenerInterfaceRequestHandler.java:236) >> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor >> #respond(RequestCycle.java:890) >> org.apache.wicket.request.RequestHandlerStack#execute(Reques >> tHandlerStack.java:64) >> org.apache.wicket.request.cycle.RequestCycle#execute(Request >> Cycle.java:261) >> org.apache.wicket.request.cycle.RequestCycle#processRequest( >> RequestCycle.java:218) >> org.apache.wicket.request.cycle.RequestCycle#processRequestA >> ndDetach(RequestCycle.java:289) >> org.apache.wicket.protocol.http.WicketFilter#processRequestC >> ycle(WicketFilter.java:259) >> org.apache.wicket.protocol.http.WicketFilter#processRequest( >> WicketFilter.java:201) >> org.apache.wicket.protocol.http.WicketFilter#doFilter(Wicket >> Filter.java:282) >> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >> lter(ApplicationFilterChain.java:241) >> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >> licationFilterChain.java:208) >> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChai >> n(AbstractShiroFilter.java:449) >> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(Abst >> ractShiroFilter.java:365) >> org.apache.shiro.subject.support.SubjectCallable#doCall(Subj >> ectCallable.java:90) >> org.apache.shiro.subject.support.SubjectCallable#call(Subjec >> tCallable.java:83) >> org.apache.shiro.subject.support.DelegatingSubject#execute(D >> elegatingSubject.java:383) >> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInt >> ernal(AbstractShiroFilter.java:362) >> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(O >> ncePerRequestFilter.java:125) >> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >> lter(ApplicationFilterChain.java:241) >> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >> licationFilterChain.java:208) >> org.apache.catalina.core.StandardWrapperValve#invoke(Standar >> dWrapperValve.java:220) >> org.apache.catalina.core.StandardContextValve#invoke(Standar >> dContextValve.java:122) >> org.apache.catalina.authenticator.AuthenticatorBase#invoke(A >> uthenticatorBase.java:503) >> org.apache.catalina.core.StandardHostValve#invoke(StandardHo >> stValve.java:170) >> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorRepo >> rtValve.java:103) >> org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:950) >> org.apache.catalina.core.StandardEngineValve#invoke(Standard >> EngineValve.java:116) >> org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAd >> apter.java:421) >> org.apache.coyote.ajp.AjpProcessor#process(AjpProcessor.java:190) >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >> #process(AbstractProtocol.java:611) >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(J >> IoEndpoint.java:314) >> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPool >> Executor.java:1142) >> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoo >> lExecutor.java:617) >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#r >> un(TaskThread.java:61) >> java.lang.Thread#run(Thread.java:745) >> >> There's another frequently occurring exception in the log that occurs >> when using the autocomplete field: >> >> java.lang.IllegalStateExceptiongetOutputStream() has already been called >> for this response org.apache.catalina.connector. >> Response#getWriter(Response.java:678) >> > > This is a bug, but I am not sure where exactly. > An application should not try to write both to the Servlet's writer and > outputStream in the same response. > The easiest way to debug is to put a breakpoint at ResponseFacade#getWriter() and ResponseFacade#getOutputStream() and see what happens. > > >> org.apache.catalina.connector.ResponseFacade#getWriter(Respo >> nseFacade.java:213) >> org.apache.wicket.protocol.http.servlet.ServletWebResponse#s >> endRedirect(ServletWebResponse.java:280) >> org.apache.wicket.protocol.http.HeaderBufferingWebResponse#s >> endRedirect(HeaderBufferingWebResponse.java:117) >> org.apache.wicket.request.handler.render.WebPageRenderer#red >> irectTo(WebPageRenderer.java:176) >> org.apache.wicket.request.handler.render.WebPageRenderer#res >> pond(WebPageRenderer.java:242) >> org.apache.wicket.core.request.handler.RenderPageRequestHand >> ler#respond(RenderPageRequestHandler.java:175) >> org.apache.wicket.request.cycle.RequestCycle$HandlerExecutor >> #respond(RequestCycle.java:890) >> org.apache.wicket.request.RequestHandlerStack#execute(Reques >> tHandlerStack.java:64) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:310) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#executeExceptio >> nRequestHandler(RequestCycle.java:319) >> org.apache.wicket.request.cycle.RequestCycle#processRequest( >> RequestCycle.java:233) >> org.apache.wicket.request.cycle.RequestCycle#processRequestA >> ndDetach(RequestCycle.java:289) >> org.apache.wicket.protocol.http.WicketFilter#processRequestC >> ycle(WicketFilter.java:259) >> org.apache.wicket.protocol.http.WicketFilter#processRequest( >> WicketFilter.java:201) >> org.apache.wicket.protocol.http.WicketFilter#doFilter(Wicket >> Filter.java:282) >> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >> lter(ApplicationFilterChain.java:241) >> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >> licationFilterChain.java:208) >> org.apache.shiro.web.servlet.AbstractShiroFilter#executeChai >> n(AbstractShiroFilter.java:449) >> org.apache.shiro.web.servlet.AbstractShiroFilter$1#call(Abst >> ractShiroFilter.java:365) >> org.apache.shiro.subject.support.SubjectCallable#doCall(Subj >> ectCallable.java:90) >> org.apache.shiro.subject.support.SubjectCallable#call(Subjec >> tCallable.java:83) >> org.apache.shiro.subject.support.DelegatingSubject#execute(D >> elegatingSubject.java:383) >> org.apache.shiro.web.servlet.AbstractShiroFilter#doFilterInt >> ernal(AbstractShiroFilter.java:362) >> org.apache.shiro.web.servlet.OncePerRequestFilter#doFilter(O >> ncePerRequestFilter.java:125) >> org.apache.catalina.core.ApplicationFilterChain#internalDoFi >> lter(ApplicationFilterChain.java:241) >> org.apache.catalina.core.ApplicationFilterChain#doFilter(App >> licationFilterChain.java:208) >> org.apache.catalina.core.StandardWrapperValve#invoke(Standar >> dWrapperValve.java:220) >> org.apache.catalina.core.StandardContextValve#invoke(Standar >> dContextValve.java:122) >> org.apache.catalina.authenticator.AuthenticatorBase#invoke(A >> uthenticatorBase.java:503) >> org.apache.catalina.core.StandardHostValve#invoke(StandardHo >> stValve.java:170) >> org.apache.catalina.valves.ErrorReportValve#invoke(ErrorRepo >> rtValve.java:103) >> org.apache.catalina.valves.AccessLogValve#invoke(AccessLogValve.java:950) >> org.apache.catalina.core.StandardEngineValve#invoke(Standard >> EngineValve.java:116) >> org.apache.catalina.connector.CoyoteAdapter#service(CoyoteAd >> apter.java:421) >> org.apache.coyote.ajp.AjpProcessor#process(AjpProcessor.java:190) >> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler >> #process(AbstractProtocol.java:611) >> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor#run(J >> IoEndpoint.java:314) >> java.util.concurrent.ThreadPoolExecutor#runWorker(ThreadPool >> Executor.java:1142) >> java.util.concurrent.ThreadPoolExecutor$Worker#run(ThreadPoo >> lExecutor.java:617) >> org.apache.tomcat.util.threads.TaskThread$WrappingRunnable#r >> un(TaskThread.java:61) >> java.lang.Thread#run(Thread.java:745) >> >> The autocomplete works as expected so it doesn't trouble the user. >> Anybody else getting this exception or does it depend on our configuration? >> >> Erik >> >> >