As per the code example in your updated question, you seem to not be delegating the validator to the right input at all, so the validator is simply ignored altogether.
You need to define the desired input (for which you'd like to attach a validator) as a <composite:editableValueHolder>
in the <composite:interface>
.
<cc:interface>
<cc:editableValueHolder name="forName" targets="inputId" />
...
</cc:interface>
<cc:implementation>
...
<h:inputText id="inputId" ... />
...
</cc:implementation>
The above <composite:editableValueHolder>
basically tells that any <f:validator for="forName">
must be applied on the <h:inputText id="inputId">
. So, the following should then do it:
<cc:myComp>
<f:validator id="myValidator" for="forName" />
</cc:myComp>
You can even use the same value in name
and targets
, but the key point is that there must be a <composite:editableValueHolder>
present so that JSF knows on what input component exactly the validator should be targeted, there can namely be more than one input component in the composite, you see.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…