[Seaside] Different behavior from Pharo and Gemstone

Johan Brichau johan at inceptive.be
Sun May 6 10:26:52 UTC 2018


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, dtrussardi at tiscali.it 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
> seaside at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/cgi-bin/mailman/listinfo/seaside

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/seaside/attachments/20180506/c7a41572/attachment.html>


More information about the seaside mailing list