Hi,

Usually, I use WOSwitchComponent for an editor component used for an entity 
with subclasses. The switch is based on the object real entity to select the 
right editor component.

With WOSwitchComponent, there are 2 things to ensure: 

1- Binding required for the used components are common to all of them.

2- Make sure the the component used by the WOSwitchComponent does not change 
between two responses, breaking this rule is easy and produce very nasty 
results. i.e. it should change only during appendToResponse. (Same rule for 
WORepetition list...)


For surrounding contents commun to multiple pages, a PageWrapper using the 
WOComponentContent is a better pattern, I often even stack them. A main page 
wrapper for the application and a specialized one for admin sections or visitor 
pages that will include the main one.

WOComponentContent indicate to place the content between the parent <WEBOBJECT> 
and </WEBOBJECT> tags. It is a reverse inclusion to add content around us !


Samuel


> Le 2015-06-02 à 07:43, HOUNKPONOU Ronald <[email protected]> a 
> écrit :
> 
> Hi everyone,
> Actually, i think all my pages (managed by woswitch) will have the same 
> binding.
> I am now implementing the woswitching and it seems to work fine for the 
> moment.
> The one thing i am having problem with is the menu on which user will click 
> to trigger
> the component switch.
> 
> Trying to use AjaxUpdateLink for the first time.
> 
> Thank you all for your contributions.
> 
> Ronald.
> 
> 
> 
> 2015-06-02 1:00 GMT+01:00 Timothy Worman <[email protected] 
> <mailto:[email protected]>>:
> +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] 
> > <mailto:[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] <mailto:[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] 
> >> <mailto:[email protected]>>:
> >> WOSwitchComponent?
> >> https://wiki.wocommunity.org/display/documentation/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] <mailto:[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] 
> >>> <mailto:[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] <mailto:[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 
> >>>> <http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd>">
> >>>>
> >>>> <html xmlns="http://www.w3.org/1999/xhtml 
> >>>> <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] 
> >>>> <mailto:[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] <mailto:[email protected]>>:
> >>>> >
> >>>> > I forgot the image.
> >>>> >
> >>>> > 2015-05-29 12:23 GMT+01:00 HOUNKPONOU Ronald 
> >>>> > <[email protected] <mailto:[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] 
> >>>> <mailto:[email protected]>)
> >>>> Help/Unsubscribe/Update your Subscription:
> >>>> https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca
> >>>>  
> >>>> <https://lists.apple.com/mailman/options/webobjects-dev/jean_francois_veillette%40yahoo.ca>
> >>>>
> >>>> This email sent to [email protected] 
> >>>> <mailto:[email protected]>
> >>>
> >>>
> >>
> >>
> >
> > _______________________________________________
> > Do not post admin requests to the list. They will be ignored.
> > Webobjects-dev mailing list      ([email protected] 
> > <mailto:[email protected]>)
> > Help/Unsubscribe/Update your Subscription:
> > https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com 
> > <https://lists.apple.com/mailman/options/webobjects-dev/lists%40thetimmy.com>
> >
> > This email sent to [email protected] <mailto:[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/samuel%40samkar.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