[Seaside] Different behavior from Pharo and Gemstone

dtrussardi at tiscali.it dtrussardi at tiscali.it
Sun May 6 13:50:06 UTC 2018


Ciao Johan,



> 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?

	Yes. 

	But ValueHolder don't know:		value	and 	value:   methods.

	I need to use: 		 contents  	and 	contents: 

	Do you agree?
	
	Very thanks,

		Dario
	

> 
> 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
> 
> _______________________________________________
> 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/9a6bc32f/attachment.html>


More information about the seaside mailing list