[Seaside] Strange error with Comet and Seaside 2.9-a3

Lukas Renggli renggli at gmail.com
Wed Apr 22 06:56:45 UTC 2009


I cannot quite follow the real cause of the problem, but there is
definitely an issue here. You push out some JQuery code that contains
callbacks, these callbacks however refer to the session that created
the event.

This is a general problem of Comet and could probably be solved by
generating different scripts for the different sessions, however there
is no mechanism right now that helps you with that. The way I used it
was to simply send a method call to the client to trigger a refresh.

Lukas

On Wed, Apr 22, 2009 at 4:47 AM, John Toohey <jt at parspro.com> wrote:
> I have a render method for a table like so :-
>
> renderUser: aUser asRowOn: html
>        |id|
>
>        id := 'bm-', aUser id asString.
>
>        html tableRow id: id; with:
>                [html
>                        tableData: [html anchor class: #underline;
>                                                        onClick:((html jQuery: #ebmd) load html: [:r | r render: (self
> editUserComponent: atUser id)]);
>                                                        with: aUser userName];
>                        tableData: aUser role;
> .
> .
> .
>
> The onClick script calls a JQuery Dialog that pops up, and when I
> click on Save, I fire an Announcement, that is registered in the same
> component. The Announcement methods is like this :-
>
> addUser: aUser
>        self pusher javascript: [ :script |
>                script << (script jQuery: #usertable)
>                        append: [:html | self renderUser: atUser asRowOn: html]
>                ]
>
>
> When the #renderUser is called from #addUser, and the tableData code
> is invoked, I get an error. This is a partial stacktrace :-
>
> UndefinedObject(Object)>>doesNotUnderstand: #withoutParameters
>        Receiver: nil
>        Arguments and temporary variables:
>                aMessage:       withoutParameters
>                exception:      MessageNotUnderstood: UndefinedObject>>withoutParameters
>                resumeValue:    nil
>        Receiver''s instance variables:
> nil
>
> JQLoad(JQAjax)>>enableCallbacks
>        Receiver: $("#ebmd").load("/","")
>        Arguments and temporary variables:
>
>        Receiver''s instance variables:
>                owner:  $("#ebmd")
>                options:        a WASmallDictionary
>                callback:       nil
>                callbackId:     nil
>                selector:       nil
>
> JQLoad(JQAjax)>>callback:
>        Receiver: $("#ebmd").load("/","")
>        Arguments and temporary variables:
>                aBlock:         [] in JQLoad(JQAjax)>>html: {[context := self
> requestContext.  context ...etc...
>        Receiver''s instance variables:
>                owner:  $("#ebmd")
>                options:        a WASmallDictionary
>                callback:       nil
>                callbackId:     nil
>                selector:       nil
>
> JQLoad(JQAjax)>>html:
>        Receiver: $("#ebmd").load("/","")
>        Arguments and temporary variables:
>                aBlock:         [] in BookmakerRootComponent>>renderUser:asRowOn: {[:r | r
>  rende...etc...
>                context:        nil
>        Receiver''s instance variables:
>                owner:  $("#ebmd")
>                options:        a WASmallDictionary
>                callback:       nil
>                callbackId:     nil
>                selector:       nil
>
>
> If I comment out the tableData line, everything works fine. If I leave
> in the tableData line, and comment out the Comet push script code,
> everything is fine. Both pieces of code enabled, generates the error.
>
> Any help, most appreciated.
> --
> -JT
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>



-- 
Lukas Renggli
http://www.lukas-renggli.ch


More information about the seaside mailing list