Hi Koshi,

Generally, having the component tree vary dynamically is not done with JSF. If you want a choice of two different components, then typically you define both of them in the page, then use the "rendered" property to ensure that only the one you want is output.

There is certainly no JSF tag in standard JSF or Tomahawk that allows a random component to be inserted into the tree. I don't initially see why it wouldn't be possible to do this, but it certainly isn't common JSF practice AFAIK.

If you *did* want to create such a component, I can imagine one that has a single child; on encodeBegin it evaluates its value expression, sets that component as its child then passes on the encodeBegin call. All other component methods would get delegated down to the child as normal.

Regards,

Simon

koshi wrote:
I have a managed bean with a method that returns a UIComponent,
sometimes a commandLink or a outputText.

public UIComponent getComponent ()
{
       UIComponent link ;
       if (this.isAction ()) {
               link = new HtmlCommandLink ();
               link.setTitle (this.title);
MethodBinding method = FacesContext.getCurrentInstance
().getApplication ().
                                    createMethodBinding (this.value, null);
               link.setAction (method);
       }
       else {
               link = new HtmlOutputText ();
               link.setValue (this.title);
       }

        return link;
}


Then, in the view i imagine something like that
:

<t:component value="#{managedBean.component}" />

is this possible or i have to create a custom component ???


thanks in advance, and sorry for my english mistakes.

Reply via email to