When exactly do you call getInputFor()? During rendering process?
(encodeBegin()/encondEnd())
according to specs, findComponent will not work properly if your Label
is not yet attached to it's parent NamingContainer. (form in you case),
so i would suggest to check for getInputFor only in renderer.
En l'instant précis du 12/21/06 11:44, Josué Alcalde González
s'exprimait dans toute sa noblesse:
> I am extending HtmlOutputLabel adding a "*" when its for component is
> required.
>
> I am almost successful but I am having a problem.
> The "*" is not rendered the first time the page is rendered.
>
> The problem, is that findComponent does not find the "for" component
> using findComponent the first time:
>
> [...]
> public EditableValueHolder getInputFor(){
> UIComponent uiFor = findComponent(getFor());
> if (uiFor == null || !(uiFor instanceof EditableValueHolder))
> return null;
> return (EditableValueHolder) uiFor;
> }
>
> [...]
> EditableValueHolder uiFor = uiLabel.getInputFor();
> if (uiFor == null || !((EditableValueHolder) uiFor).isRequired())
> return;
>
>
> [...]
>
> <f:view>
> <h:form>
> <csa:outputLabel id="ol" value="Hello world" for="it""/>
> <t:inputText id="it" required="true" />
> <t:commandButton id="cb" value="Button"/>
> </h:form>
> <t:messages />
> </f:view>
>
> Why it is not find
>
>
>