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( > SubjectCallable.java:90) > org.apache.shiro.subject.support.SubjectCallable#call(Subjec > tCallable.java:83) > org.apache.shiro.subject.support.DelegatingSubject#execute( > DelegatingSubject.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( > JIoEndpoint.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# > run(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. > 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# > redirectTo(WebPageRenderer.java:176) > org.apache.wicket.request.handler.render.WebPageRenderer# > respond(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( > SubjectCallable.java:90) > org.apache.shiro.subject.support.SubjectCallable#call(Subjec > tCallable.java:83) > org.apache.shiro.subject.support.DelegatingSubject#execute( > DelegatingSubject.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( > JIoEndpoint.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# > run(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 > >