[Seaside] Different behavior from Pharo and Gemstone

Mariano Martinez Peck marianopeck at gmail.com
Sun May 6 14:09:37 UTC 2018


Yes. #contents

On Sun, May 6, 2018, 10:51 AM dtrussardi at tiscali.it <dtrussardi at tiscali.it>
wrote:

> 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
>
>
> _______________________________________________
> 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/a2f94079/attachment-0001.html>


More information about the seaside mailing list