I've dropped the @Import and tried many things inspired by Thiago and Lenny's
source (thanks guys), but the module is still not found.
Does the URL of the module look right?
http://gc1.local:8080/myapp/asset.gz/module/pages/stuff.js
My WAR has META-INF/ at the top level alongside WEB-INF/ and legacy directories
like js/ . To be clear, stuff.js is at META-INF/modules/pages/stuff.js . That's
right isn't it? The legacy directories won't mess up asset resolution of the
module will they?
Cheers,
Geoff
On 03/10/2013, at 4:29 AM, Thiago H de Paula Figueiredo wrote:
> Hi, Geoff!
>
> As Lance said, with JavaScriptSupport.require(), you shouldn't use @Import in
> the same file, because require() already does that.
>
> Check these examples from tapestry-wymeditor:
>
> https://github.com/thiagohp/tapestry-wymeditor/blob/master/src/main/java/br/com/arsmachina/tapestry_wymeditor/mixins/Wymeditor.java
>
> https://github.com/thiagohp/tapestry-wymeditor/blob/master/src/main/resources/META-INF/modules/wymeditor/wymeditor.js
>
> On Wed, 02 Oct 2013 11:16:00 -0300, Geoff Callender
> <[email protected]> wrote:
>
>> Thanks, Lance, but no cigar. If I leave out the @Import line then I don't
>> get the good news message. If I leave out the jsSupport.require line then I
>> don't get the bad news message (and of course the javascript still doesn't
>> run).
>>
>> BTW, notice that the URLs of the two messages differ. The first one includes
>> the checksum that we probably want.
>>
>> On 02/10/2013, at 11:30 PM, Lance Java wrote:
>>
>>> You are trying to import stuff.js twice. Once via require.js and once via
>>> @Import. I get the feeling it's the @Import that's failing.
>>> On 2 Oct 2013 14:13, "Geoff Callender" <[email protected]>
>>> wrote:
>>>
>>>> I'm desperately seeking an up-to-date example of custom javascript,
>>>> because nothing I've tried works. Here's one attempt that failed...
>>>>
>>>> package myapp.pages;
>>>>
>>>> import javax.inject.Inject;
>>>>
>>>> import org.apache.tapestry5.annotations.Import;
>>>> import org.apache.tapestry5.json.JSONObject;
>>>> import org.apache.tapestry5.services.javascript.JavaScriptSupport;
>>>>
>>>> @Import(stack = { "core" }, library = { "stuff.js" })
>>>> public class Index2 {
>>>>
>>>> @Inject
>>>> private JavaScriptSupport jsSupport;
>>>>
>>>> void afterRender() {
>>>> JSONObject params = new JSONObject();
>>>> jsSupport.require("pages/stuff").with(params);
>>>> }
>>>>
>>>> }
>>>>
>>>> ...In my WAR is /META-INF/modules/pages/stuff.js...
>>>>
>>>> define(["jquery", "t5/core/console"], function($, console) {
>>>> return function(params) {
>>>> console.warn("jQuery version: " + $().jquery);
>>>> };
>>>> });
>>>>
>>>> ...The javascript console shows good news...
>>>>
>>>> Loading library /myapp/asset.gz/app/495033b1/pages/stuff.js
>>>>
>>>> ...followed by bad news...
>>>>
>>>> Failed to load resource: the server responded with a status of 404 (Not
>>>> Found) http://gc1.local:8080/myapp/asset.gz/module/pages/stuff.js
>>>>
>>>> Cheers,
>>>>
>>>> Geoff
>>>>
>>>>
>>>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [email protected]
>> For additional commands, e-mail: [email protected]
>>
>
>
> --
> Thiago H. de Paula Figueiredo
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]