Re: Different behavior from Pharo and Gemstone

Johan Brichau <[email protected]>
Newsgroups gmane.comp.lang.smalltalk.squeak.seaside
Message-ID <[email protected]>
Hi Dario,

This sounds like a known bug in GemStone when using temporary variables in separate callbacks with the same lexical scope.

What you can do to work around this is to not assign directly to the variable but wrap the value in a holder. 
For example:

dialogId := ValueHolder new.

and in your callback use:

	dialogId value: xxx

and

	dialogId value

to assign and retrieve the value.

Does this work for you?

cheers,
Johan


> On 6 May 2018, at 11:02, [email protected] wrote:
> 
> Ciao,
> 
> 	i have this code into Pharo 4.0 Seaside 3.1
> 
> renderDbAnchorIncrementVoce: aVoceCompilata index: anIndexRow  nominative: nominative on:html 
> 	" DataBase TableData row increment "
> 	| flagDialog dialogId  |
> 	flagDialog:= false.
> 	html anchor
> 			onClick:( html jQuery script:[ :script |
> 		
>          					script << (JSStream on: 'this.onclick = function(){ return false; }').
> 					
> 							script << html jQuery ajax
> 							 	callback:[ flagDialog := false.
> 										  [ masterView increaseVoce: aVoceCompilata ]
> 											on: DTRError do:[:ex | masterView exception: ex.
> 															flagDialog := true.
> 															(ex isMemberOf: DTRStockError)
> 																	ifTrue:[ dialogId :=  #stockErrorDialogId ]
> 																	ifFalse:[ dialogId := #genericErrorDialogId]]];
> 								onComplete: ( html jQuery ajax script: [ :s |
> 									flagDialog 
> 										ifTrue:[ s << (s  jQuery: dialogId ) dialog open ]
> 										ifFalse:[ s << (s jQuery: #'idVoceAttiva') load
>                            									html: [ :h | self masterView renderVoceAttivaOn: h ].
> 												self updateRow: anIndexRow with: aVoceCompilata on: html nominative: nominative script: s ]])]);
> 		with: [ html image
> 				url:  DTRFileLibrary / #greenupGif ;
> 				altText: 'Incrementa';
> 				title:'Incrementa']
> 
> It works fine into Pharo :
> 
> 	the ajax callback update the data:	 [ masterView increaseVoce: aVoceCompilata ]
> 
> 	and if error is detected setup some variables used into onComplete: code to display a relative dialog open.
> 
> But this code run in GLASS ( Gemstone 3.3.6 )  Seaside 3.1  don't works.
> 
> As if the variables used in the onComplete: code are not updated to what is done in the callback.
> 
> So even if an error is detected, the relative dialog is not displayed.
> 
> Considerations?
> 
> Thanks,
> 
> 	Dario
> _______________________________________________
> seaside mailing list
> [email protected]
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

_______________________________________________
seaside mailing list
[email protected]
http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.