joi, 1 octombrie 2015

Set a component renderer from page

Let's suppose that we have two input components as below:

<h:inputText id="..." value="..."/>
<h:inputText id="..." value="... "/>

By default, both of them will be renderer via the renderer identified by the javax.faces.Text renderer type. But, let's suppose that we want to use the default renderer for the first input component, and a custom renderer (provided by us with renderer type, dummy.foo.Text) for the second input component. Well, we can try to use the rendererType attribute, but you will notice that this doesn't work.

<h:inputText id="..." value="..."/>
<h:inputText id="..." value="... " rendererType="dummy.foo.Text"/>

Bauke Scholtz (aka BalusC), member of JSF EG , explains: " It will work. Tooling only doesn't recognize is because it's not listed in taglib file which the tooling depends on. You can alternatively use f:attribute for that."

So, until this will work, we can use <f:attribute> as below:

<h:inputText id="..." value="..."/>
<h:inputText id="..." value="...">         
 <f:attribute name="rendererType" value="dummy.foo.Text"/>
</h:inputText>

Well, I saved a lot of time with this approach because I was about to write a custom component for it! I am glad that I asked Bauke!

Niciun comentariu:

Trimiteți un comentariu