[Seaside] Glorp-Seaside-callback not Working

Alan Knight knight at acm.org
Mon Aug 13 14:55:36 UTC 2007


In general, if you have a unit of work in progress, then any objects you read during that unit of work will be registered automatically. Registering more than once should do no harm, as long as the object was registered before it was modified.

I don't know why you would be having that particular problem, but I don't know exactly what the methods commit: and and the callback does. It would depend on the flow of control. If seaside is blocking, then the unit of work won't have committed, so I would expect the changes to be seen. However, if Seaside lets your process keep going when you register the callback, then presumably it will have already fallen through, and committed the unit of work before any changes were made.

So you'd need to either be using Seaside API's that "block" the calling process. Or you'd need to begin the unit of work here, and commit it explicitly later. So, for example, I think it might work if you put the call to commit the unit of work in the callback for the submit button. Although you might have to do some fiddling in case it gets called more than once due to continuations or other mechanisms.

At 12:53 PM 8/12/2007, Rajeev Lochan wrote:
>Hi Ron,
>I tried to implement what you hinted, no progress.
>
>I changed my code to 
>
>html
>        form: [self session
>                commit: [temp := self session
>                                readOneOf: BlogPost 
>                                where: [:each | each persistentId = '1'].
>                    self session register: temp.
>                    html textInput value: temp title;
>                        
>                        callback: [:value | temp title: value].
>                    html submitButton
>                        callback: [self session register: temp];
>                         text: 'Update']] 
>
>
>I am registering before change as you said, but doesnt change the title. (I am registering twice though)
>
>
>But, even if I dont register the object, before changing. It does update if I use normal setter technique. (Snippet below) 
>
>html
>        form: [self session
>                commit: [temp := self session
>                                readOneOf: BlogPost
>                                where: [:each | each persistentId = '1']. 
>                    temp title: 'some Title'.
>                    html submitButton
>                        callback: [self session register: temp];
>                         text: 'Update']]
>
>
>
>
>In Glorp Tutorial by Roger Whitney, he updated in just unitOfWork and also without registering it.
>
>"   A UnitOfWork will keep track of the changes we make in objects. The following will retrieve a 
>person, change the first name of person and then write the changes back to the database.
>
>session beginUnitOfWork.
>foundPerson := session readOneOf: Person where: [:each | each firstName = 'Jose']. 
>foundPerson firstName: 'RamJet'.
>session commitUnitOfWork
>
>When we start a UnitOfWork it records all the objects we read from the database. When the
>UnitOfWork is committed it writes all the changed objects back to the database."
>
>
>As much I understand, it has something to do with 
>self session commit:[ ........... html textInput value: callback: ...........] 
>
>
>BTW, I am not using Magritte in my proposed application. So Ramon's Active Record for Magritte would possibly not help me much.
>
>Thanks in advance.
>
>
>On 8/12/07, Ron Teitelbaum <<mailto:Ron at usmedrec.com>Ron at usmedrec.com> wrote:
>
>Hi Rajeev,
>
> 
>
>You need to register the object before you make changes to it.  The registration tells Glorp to track changes to your object. 
>
> 
>
>Hope that helps!
>
>Ron Teitelbaum
>
> 
>
>----------
>From: <mailto:seaside-bounces at lists.squeakfoundation.org>seaside-bounces at lists.squeakfoundation.org [mailto:seaside-bounces at lists.squeakfoundation.org] On Behalf Of Rajeev Lochan
>Sent: Sunday, August 12, 2007 11:52 AM
>To: Seaside - general discussion
>Subject: [Seaside] Glorp-Seaside-callback not Working
>
> 
>
>Dear Seasiders,
>I followed Ramon's Blog of porting seaside to postgreSQL using Glorp. 
>I have now created 2 components. In one, you can enter the details of the form (which are in the form of textInput and textArea) and are registered upon submitting a button. This part works well. 
>
>Now, in the second component, I want to edit(update) the entries I have created earlier. I use textInput and textArea again for this, and when I edit and submit using a button (register the model) , the update doesnt seem to work. 
>
>I have observed one thing here, the update doesnt seem to work in textInput value: callback:
>
>A snippet is code is here.(which doesnt update the title)
>
>
>self session
>        commit: [temp := self session 
>                        readOneOf: BlogPost
>                        where: [:each | each title = '1'].
>                       html textInput value: temp title;
>                        callback: [:value | temp title: value]. 
>                         self session register: temp]
>
>
>
>A snippet which uses simple setter technique and is updated.
>
>self session
>        commit: [temp := self session
>                        readOneOf: BlogPost
>                        where: [:each | each title = '1'].
>                        temp title: 'some Title'.
>                        self session register: temp].
>
>
>
>Anticipating your help       
>
>
>
>
>-- 
>Rajeev Lochan
>
>Co-founder, AR-CAD.com
>
><http://www.ar-cad.com>http://www.ar-cad.com
>+91 9243468076 (Bangalore)
>080 65355873 
>
>_______________________________________________
>Seaside mailing list
><mailto:Seaside at lists.squeakfoundation.org>Seaside at lists.squeakfoundation.org 
>http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside 
>
>
>
>
>-- 
>Rajeev Lochan
>
>Co-founder, AR-CAD.com
>
><http://www.ar-cad.com>http://www.ar-cad.com
>+91 9243468076 (Bangalore)
>080 65355873 
>_______________________________________________
>Seaside mailing list
>Seaside at lists.squeakfoundation.org
>http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

--
Alan Knight [|], Cincom Smalltalk Development
knight at acm.org
aknight at cincom.com
http://www.cincom.com/smalltalk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/seaside/attachments/20070813/95ab3f0f/attachment.htm


More information about the seaside mailing list