An example:

        
http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/modal/1 
<http://jumpstart.doublenegative.com.au/jumpstart/examples/javascript/modal/1>


> On 27 Sep 2018, at 7:06 pm, Nathan Quirynen <nat...@pensionarchitects.be> 
> wrote:
> 
> When your request is an ajax call, you can use the following construct to use 
> the JavaScriptSupport service:
> 
> ajaxResponseRenderer.addCallback(new JavaScriptCallback() {
>             @Override
>             public void run(JavaScriptSupport javascriptSupport) {
> 
>                 // Your code here
> 
>             }
> }
> 
> 
> Op 27/09/2018 om 10:59 schreef Davide Vecchi:
>> Hello everybody,
>> 
>> I am having exactly the same problem described in the thread linked below, 
>> that is the exception
>> 
>> "No object of type 
>> org.apache.tapestry5.services.javascript.JavaScriptSupport is available from 
>> the Environment"
>> 
>> that occurs only if the event handler is handling an Ajax request:
>> 
>> http://apache-tapestry-mailing-list-archives.1045711.n5.nabble.com/No-object-of-type-org-apache-tapestry5-services-javascript-JavaScriptSupport-is-available-from-the-E-tp5551633p5551729.html
>> 
>> My stacktrace is at the bottom of this email.
>> 
>> The event being handled in my case is the click on an EventLink that has its 
>> t:zone attribute set to the name of a zone.
>> 
>> In that thread jochenfrey explains that he solved the problem using the 
>> Trigger component to "get Tapestry Initializer Calls into the Response", 
>> which I think is what I need as well.
>> 
>> However, I don't know where in the template the <trigger> tag must be 
>> placed. I'm also not sure what the event handler of the trigger should do in 
>> order to provide JavaScript to the EventLink handler. So those are my two 
>> questions.
>> 
>> My understanding is that the Trigger event handler should push the 
>> JavaScriptSupport instance on the stack, so I do:
>> 
>> environment.push(JavaScriptSupport.class, javaScriptSupport);
>> 
>> but I'm not sure that's what is needed, and anyway it doesn't work for me, 
>> it get that exception.
>> 
>> I have put the <trigger> tag immediately after the opening tag of the zone 
>> the EventLink is bound to:
>> 
>>                 
>> ========================================================================
>> 
>> <t:zone id="myBoundZone" >
>> 
>> <t:trigger event="javaScriptNeeded" />
>> 
>> ......
>> </t:zone>
>> 
>>                 <form t:type="form" t:id="mainForm">
>> 
>>             <t:zone t:id="mainZone1">
>> 
>>                   ......
>> 
>>                   <t:zone t:id="mainZone2">
>> 
>>                         ......
>>                         <t:eventlink t:id="myLink" t:zone="myBoundZone" >
>>                               Click me.
>> </t:eventlink>
>> 
>>             </t:zone>
>> 
>> </t:zone>
>> 
>>       </form>
>> 
>>                 
>> ----------------------------------------------------------------------------------------------------------------------
>> 
>>        @Environmental
>>        private JavaScriptSupport javaScriptSupport;
>> 
>>        @Inject
>>        private Environment environment;
>> 
>>        void onJavaScriptNeeded()
>>        {
>>               this.environment.push(JavaScriptSupport.class, 
>> this.javaScriptSupport);
>>        }
>> 
>>                 
>> ========================================================================
>> 
>> I don't know if the following matters, however:
>> 
>> 
>>   *   The zone the EventLink is bound to is defined only in the template (in 
>> the Java code I never need to return that zone from any method or do 
>> anything with it so I did not create any Zone field for that zone).
>> 
>> 
>>   *   In the template, the EventLink is itself inside a zone, which is 
>> nested inside another zone.
>> 
>> 
>> 
>>   *   The "javaScriptNeeded"  event occurs when the page is loaded. It does 
>> not occur when I click the link.
>> 
>> 
>> Thanks for any possible hint.
>> 
>> 
>> org.apache.tapestry5.ioc.util.UnknownValueException: No object of type 
>> org.apache.tapestry5.services.javascript.JavaScriptSupport is available from 
>> the Environment.
>>                 at 
>> org.apache.tapestry5.internal.services.EnvironmentImpl.peekRequired(EnvironmentImpl.java:96)
>>                 at $Environment_4a157190551.peekRequired(Unknown Source)
>>                 at $Environment_4a157190347.peekRequired(Unknown Source)
>>                 at 
>> org.apache.tapestry5.internal.transform.EnvironmentalWorker$EnvironmentalConduit.get(EnvironmentalWorker.java:59)
>>                 at 
>> mypackage.tapestry.pages.main.MyPage.conduit_get_javaScriptSupport(MyAccount.java)
>>                 at 
>> mypackage.tapestry.pages.main.MyPage.onChangeCredentialsBtn(MyAccount.java:814)
>>                 at 
>> mypackage.tapestry.pages.main.MyPage.dispatchComponentEvent(MyAccount.java)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.dispatchEvent(ComponentPageElementImpl.java:917)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.processEventTriggering(ComponentPageElementImpl.java:1102)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.access$3100(ComponentPageElementImpl.java:57)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1047)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl$5.invoke(ComponentPageElementImpl.java:1044)
>>                 at 
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:82)
>>                 at 
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.invoke(PerThreadOperationTracker.java:72)
>>                 at 
>> org.apache.tapestry5.ioc.internal.RegistryImpl.invoke(RegistryImpl.java:1260)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementResourcesImpl.invoke(ComponentPageElementResourcesImpl.java:154)
>>                 at 
>> org.apache.tapestry5.internal.structure.ComponentPageElementImpl.triggerContextEvent(ComponentPageElementImpl.java:1043)
>>                 at 
>> org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler.handle(AjaxComponentEventRequestHandler.java:110)
>>                 at 
>> org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter.handle(AjaxFormUpdateFilter.java:56)
>>                 at $ComponentEventRequestHandler_4a157190730.handle(Unknown 
>> Source)
>>                 at $ComponentEventRequestHandler_4a157190574.handle(Unknown 
>> Source)
>>                 at 
>> org.apache.tapestry5.internal.services.AjaxFilter.handle(AjaxFilter.java:42)
>>                 at $ComponentEventRequestHandler_4a157190575.handle(Unknown 
>> Source)
>>                 at 
>> org.apache.tapestry5.upload.internal.services.UploadExceptionFilter.handle(UploadExceptionFilter.java:76)
>>                 at $ComponentEventRequestHandler_4a157190575.handle(Unknown 
>> Source)
>>                 at 
>> org.apache.tapestry5.modules.TapestryModule$37.handle(TapestryModule.java:2216)
>>                 at $ComponentEventRequestHandler_4a157190575.handle(Unknown 
>> Source)
>>                 at $ComponentEventRequestHandler_4a157190441.handle(Unknown 
>> Source)
>>                 at 
>> org.apache.tapestry5.internal.services.ComponentRequestHandlerTerminator.handleComponentEvent(ComponentRequestHandlerTerminator.java:43)
>>                 at 
>> org.apache.tapestry5.internal.services.DeferredResponseRenderer.handleComponentEvent(DeferredResponseRenderer.java:45)
>>                 at 
>> $ComponentRequestHandler_4a157190443.handleComponentEvent(Unknown Source)
>>                 at 
>> org.apache.tapestry5.services.InitializeActivePageName.handleComponentEvent(InitializeActivePageName.java:39)
>>                 at 
>> $ComponentRequestHandler_4a157190443.handleComponentEvent(Unknown Source)
>>                 at 
>> org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:55)
>>                 at 
>> org.apache.tapestry5.internal.services.RequestOperationTracker$1.perform(RequestOperationTracker.java:52)
>>                 at 
>> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.perform(OperationTrackerImpl.java:110)
>>                 at 
>> org.apache.tapestry5.ioc.internal.PerThreadOperationTracker.perform(PerThreadOperationTracker.java:84)
>>                 at 
>> org.apache.tapestry5.ioc.internal.RegistryImpl.perform(RegistryImpl.java:1266)
>>                 at 
>> org.apache.tapestry5.internal.services.RequestOperationTracker.handleComponentEvent(RequestOperationTracker.java:47)
>>                 at 
>> $ComponentRequestHandler_4a157190443.handleComponentEvent(Unknown Source)
>> ....
>> 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> For additional commands, e-mail: users-h...@tapestry.apache.org
> 

Reply via email to