+1

As is, WOSwitchComponent expects all child switched components to take the same 
bindings. It can be a pretty surly limitation. If your subcomponents take the 
same binding(s) then WOSwitchComponent works pretty great.

For “fun,” I created a set of interfaces (one each, for the base page with the 
switch component, and the switched component) which, when implemented, enforces 
an api where you can pass custom bindings. Then I can pass a single dictionary 
of bindings.

Works fine, but I’m not sure the cure was better than the disease!

Tim Worman
UCLA GSE&IS


> On Jun 1, 2015, at 8:03 AM, Jean-François Veillette 
> <[email protected]> wrote:
> 
> I can’t remember exactly.  It was solved a long time ago.
> All I can remember is that it was somehow related to instance not having 
> expected binding / ivars values.
> 
> My comment where just to give good recommendation on the WOSwitch strategy:  
> it’s working great.
> 
> But also to warn you that once you make it work in dev, you might still 
> encounter bug in extensive testing, and when you do, keep in mind that it 
> might be related to multiples instances of your component (WOSwitch will have 
> to instantiate one of your switched component).
> At the time, once I figured out exactly what was the problem, it was not hard 
> to fix, so you should have no problem fixing it either.
> 
> Sorry, it’s all I remember.
> 
> jfv
> 
> 
>> On May 29, 2015, at 6:21 PM, HOUNKPONOU Ronald <[email protected]> 
>> wrote:
>> 
>> Please Jean-François!
>> 
>> How to not use it?
>> I would like to learn good practices.
>> 
>> 
>> 2015-05-29 23:12 GMT+01:00 Jean-François Veillette 
>> <[email protected]>:
>> WOSwitchComponent?
>> https://wiki.wocommunity.org/display/documentation/WOSwitchComponent
>> 
>> I used it with great success, once I figured out how to not use it.
>> Right now I can’t remember what was the symptom, what what the cause and how 
>> I fixed it.
>> All I remember is that it’s related to sharing instances your component 
>> instantiated by the switch component.  So if you encounter a problem, keep 
>> that in mind.
>> 
>> jfv
>> 
>> 
>>> On May 29, 2015, at 5:22 PM, HOUNKPONOU Ronald 
>>> <[email protected]> wrote:
>>> 
>>> Hi everyone!!
>>> 
>>> Thanks for all your response. 
>>> Everything is now working for me. 
>>> I was doing a mistake in the call of the component A in a third one (C) as 
>>> if A require the binding value. (A is the template that all pages should 
>>> use).
>>> 
>>> But i have another question (I don't know if it is best to make a separate 
>>> post):
>>> 
>>> Question : What is the best way to make a dynamiq page inclusion system?
>>> 
>>> I have a lot of custumized components those i would like to listed on a 
>>> central page (this page use my template).
>>> And i want that depending of the clicked link the corresponding components 
>>> is load in the content area ofmy central page.
>>> 
>>> Thanks for your help.
>>> 
>>> 2015-05-29 16:57 GMT+01:00 Jean-François Veillette 
>>> <[email protected]>:
>>> Hi Ronald,
>>> is your B component syncronizing bindings?
>>> If so, your B instance should receive a call equivalent to  « 
>>> b.takeValueForKey(session().authenticatedUser(), “userAccount”); »  so you 
>>> should comply to KVC for this key (public ivar, get/set method .. your 
>>> choice) to get it assigned and available.
>>> 
>>> If your B component is non-synchronized, then you have to get it whenever 
>>> you need it:
>>>     « User user = this.valueForBinding(“userAccount”); »
>>> 
>>> Also, since your B component is in a framework and is aware of the concept 
>>> of a userAccount, I would try to keep the dependency as loose as possible 
>>> and NOT add coupling directly with the session object.
>>> But if you absolutely have to do it (last resort), it could be done with 
>>> simple KVC:
>>>      « User user = (User) session().valueForKey("authenticatedUser”); »
>>> or even:
>>>      « User user = (User) valueForKeyPath(“session.authenticatedUser”); »
>>> 
>>> Ways of passing generic/contextual objects from the front-end layer to the 
>>> lower end without adding too much coupling is by going through the 
>>> editingContext.userInfo dictionary, or through the current thread userInfo 
>>> dictionary (see ERXThreadStorage).  Those 2 objects are available in most 
>>> lower level objects and can be set from the upper level just as easily.
>>> 
>>> jfv
>>> 
>>> 
>>>> On May 29, 2015, at 9:11 AM, HOUNKPONOU Ronald 
>>>> <[email protected]> wrote:
>>>> 
>>>> In A.html
>>>> 
>>>> <webobject name = "template">
>>>> 
>>>> </webobject>
>>>> 
>>>> 
>>>> In A.wood
>>>> 
>>>> template : B {
>>>>    userAccount = session.authenticatedUser;
>>>> }
>>>> 
>>>> 
>>>> in B.html
>>>> 
>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>>>>    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd";>
>>>> 
>>>> <html xmlns="http://www.w3.org/1999/xhtml"; xml:lang="en" lang="en">
>>>> <head>
>>>>    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
>>>>    <title>untitled</title>
>>>> </head>
>>>> <body>
>>>> <webobject name = "specialitemedicale">
>>>> <label>Libellé</label>
>>>> <webobject name = "libelle"/>
>>>> <webobject name = "enregistrer"/>
>>>> </webobject>
>>>> </body>
>>>> </html>
>>>> 
>>>> in B.wood
>>>> 
>>>> specialitemedicale : WOForm {
>>>> }
>>>> 
>>>> libelle : WOTextField {
>>>>   value = libelle;
>>>> }
>>>> 
>>>> enregistrer : WOSubmitButton {
>>>> action=insertSpecialitemedicale;
>>>> value="Enregistrer";
>>>> }
>>>> 
>>>> 2015-05-29 13:15 GMT+01:00 Johann Werner <[email protected]>:
>>>> What is your HTML? You need to wire up your binding with the actual 
>>>> method/ivar of your component A:
>>>> 
>>>> …
>>>> <wo:B userAccount="$account" />
>>>> …
>>>> 
>>>> and in A.java:
>>>> 
>>>> public MyAccountClass account = …;
>>>> 
>>>> 
>>>> 
>>>> 
>>>> > Am 29.05.2015 um 13:25 schrieb HOUNKPONOU Ronald 
>>>> > <[email protected]>:
>>>> >
>>>> > I forgot the image.
>>>> >
>>>> > 2015-05-29 12:23 GMT+01:00 HOUNKPONOU Ronald 
>>>> > <[email protected]>:
>>>> > Hi everyone,
>>>> >
>>>> > Iam facing a problem with subcomponent binding.
>>>> >
>>>> > I have 2 componets A & B. B is to be include in A.
>>>> >
>>>> > But B need some information (eg. Authenticated user object). So i have 
>>>> > create a binding as show in the attached picture and add its gette 7 
>>>> > setter in B.java.
>>>> >
>>>> > (I dont know how to specify Value Set to be my Objet Type. so i try with 
>>>> > undefined & ressources)
>>>> >
>>>> > But the object is not passed to B.
>>>> >
>>>> > I got a NullPointerException when trying to access the passed vairable 
>>>> > in B.java
>>>> >
>>>> > Thanks for your help.
>>>> >
>>>> > <Selection_005.png>
>>>> 
>>>> 
>>>> 
>>>> _______________________________________________
>>>> Do not post admin requests to the list. They will be ignored.
>>>> Webobjects-dev mailing list      ([email protected])
>>>> Help/Unsubscribe/Update your Subscription:
>>>> https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca
>>>> 
>>>> This email sent to [email protected]
>>> 
>>> 
>> 
>> 
> 
> _______________________________________________
> Do not post admin requests to the list. They will be ignored.
> Webobjects-dev mailing list      ([email protected])
> Help/Unsubscribe/Update your Subscription:
> https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com
> 
> This email sent to [email protected]


 _______________________________________________
Do not post admin requests to the list. They will be ignored.
Webobjects-dev mailing list      ([email protected])
Help/Unsubscribe/Update your Subscription:
https://lists.apple.com/mailman/options/webobjects-dev/archive%40mail-archive.com

This email sent to [email protected]

Reply via email to