[Seaside] Re: Seaside Async and form submission

Carl Gundel carlg at libertybasic.com
Wed Feb 18 19:42:40 UTC 2009


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!



More information about the seaside mailing list