2012-06-03 4 views
2

У меня есть составной компонент в JSF 2.0Композитный проверки компонентов в JSF 2.0

<composite:interface> 
    <composite:attribute name="inputId"/> 
    <composite:attribute name="labelValue"/> 
    <composite:attribute name="inputValue" /> 
    <composite:attribute name="required" /> 
    <composite:attribute name="requiredMessage" /> 
</composite:interface> 
<composite:implementation> 
    <div class="control-group"> 
     <h:outputLabel for="#{cc.attrs.inputId}" value="#{cc.attrs.labelValue}" class="control-label" /> 
     <div class="controls"> 
      <h:inputText id="#{cc.attrs.inputId}" value="#{cc.attrs.inputValue}" required="#{cc.attrs.required}" requiredMessage="#{cc.attrs.requiredMessage}" /> 
     </div> 
    </div> 
</composite:implementation> 

и мне нужно сделать некоторые проверки на нем (в это число, длина проверки и т.д.) Итак, как я могу это сделать?

ответ

4

Необходимо указать желаемый ввод, для которого вы хотите добавить валидатор в качестве <cc:editableValueHolder> в <cc:interface>.

<cc:interface> 
    <cc:editableValueHolder name="input" targets="#{cc.attrs.inputId}" /> 
    ... 
</cc:interface> 

Тег в основном говорит, что любая <f:validator for="input"> должна быть применена на UIInput компонента с тем же id, как указано в targets. Таким образом, вы можете зарегистрировать его следующим образом:

<my:input ...> 
    <f:validateLength for="input" ... /> 
</my:input>