[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