[Seaside] Re: Seaside Async and form submission

Ryan Simmons ryan.craig.simmons at gmail.com
Thu Feb 19 07:48:58 UTC 2009


Hi Carl you can do this with Scriptaculous as follows
just change the anchor to

anchor
  onClick: (html updater
                     triggerForm: 'testForm';
                     id: '' " You need a id fro the html element Id
that you are updating with the render "
                     callback: [:r |
                              self counter: counter + 1.
                              self renderOnHtml: r]);
  with: 'test'.

This is from 2.8 though, never worked on 2.6 :)

Ryan

2009/2/18 Carl Gundel <carlg at libertybasic.com>:
> I tried this with Seaside 2.8 with the same results.  :-/  I also noticed
> that my renderOnHtml: method was rendering the form again, so I put the form
> code in the renderContentOn: method.  No difference.
>
> Okay, I can see that this can be made to work (sort of) by assigning the
> liveCallback to the selectTag, but this just doesn't meet my needs.  Isn't
> there some way to force a form's contents to be submitted when an anchor has
> a liveCallback?  Shouldn't an Ajax action be able to use all the contents of
> a form?
>
> -Carl
>
> On Feb 18, 2009, at 2:42 PM, Carl Gundel wrote:
>
>>
>> On Feb 18, 2009, at 12:59 PM, Carl Gundel wrote:
>>
>>> I'm using Async with my Run BASIC project.  I am still using Seaside 2.6,
>>> but I plan to migrate forward as soon as I can get my Ajax stuff working
>>> okay.  have a dynamically generated form with a couple of listboxes and an
>>> anchor.  When the link is clicked I am expecting the values to get scraped
>>> from the controls and assigned to my model, but it doesn't seem to be
>>> happening.  The form is getting built and rendered correctly as far as I can
>>> tell.
>>
>> Okay, here is a complete tiny class that seems to exhibit the same
>> behavior.  The counter increments when the anchor is clicked, but the value
>> of selection is always nil.
>>
>> Any ideas?
>>
>> -Carl
>>
>> Smalltalk defineClass: #AsyncTest
>>        superclass: #{Seaside.WAComponent}
>>        indexedType: #none
>>        private: false
>>        instanceVariableNames: 'list selection counter '
>>        classInstanceVariableNames: ''
>>        imports: ''
>>        category: 'Run BASIC'!
>>
>> !AsyncTest class methodsFor: 'as yet unclassified'!
>>
>> canBeRoot
>>        ^ true!
>>
>> initialize
>>        self registerAsApplication: 'asyncTest'.! !
>>
>> !AsyncTest methodsFor: 'rendering'!
>>
>> renderContentOn: html
>>        self renderOnHtml: html!
>>
>> rendererClass
>>        ^Seaside.WARenderCanvas!
>>
>> renderOnHtml: html
>>        | select anchor |
>>        html
>>                text: 'Async test';
>>                break.
>>        (html form)
>>                id: 'testForm';
>>                with:
>>                                [html
>>                                        text: 'Counter = ' , self counter
>> asString;
>>                                        break.
>>                                (html div)
>>                                        id: 'section';
>>                                        with:
>>                                                        [select := html
>> select.
>>                                                        select list: self
>> list.
>>                                                        select on:
>> #selection of: self.
>>                                                        anchor := html
>> anchor.
>>                                                        anchor
>>
>>  liveCallback:
>>
>>      [:h |
>>
>>      self counter: counter + 1.
>>
>>      self renderOnHtml: h];
>>
>>  submitFormNamed: 'testForm';
>>                                                                text:
>> 'test'.
>>                                                        html break.
>>                                                        html text: self
>> selection]]! !
>>
>> !AsyncTest methodsFor: 'accessing'!
>>
>> counter
>>        counter isNil ifTrue: [ counter := 0 ].
>>        ^counter!
>>
>> counter: anObject
>>        counter := anObject!
>>
>> list
>>        list isNil ifTrue: [ list := OrderedCollection with: '1' with:
>> 'one' with: 'won' with: 'Juan' ].
>>        ^list!
>>
>> list: anObject
>>        list := anObject!
>>
>> selection
>>        ^selection!
>>
>> selection: anObject
>>        selection := anObject! !
>>
>> #{AsyncTest} initialize!
>>
>
> _______________________________________________
> seaside mailing list
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
>


More information about the seaside mailing list