, 나는 가정이 같은 구성 요소가 있습니다
<cc:interface >
<cc:editableValueHolder name="text" targets="myText" />
</cc:interface>
<cc:implementation>
<h:inputText id="myText">
<f:validateLength maximum="10" />
</h:inputText>
</cc:implementation>
을 그리고 당신은 그것을 사용하고자하는 - 가정의 myInput
라고 -이 같은 :
<ns:myInput>
<f:validateLength maximum="5" for="text" />
</ns:myInput>
따라서, 경우 validateLength가 주어지지 않으면, 더 제한적인 경우 10
이 적용되어야하며, 다른 값은 적용되어야합니다.
나는 특정 유효성 검사 유형에 대해 하나의 유효성 검사기 만 사용할 수 있다고 생각합니다.
이
첫째,이 같은 구성 요소 내에서 정규식 유효성 검사기를 사용할 수 있습니다 :
<h:inputText id="myText">
<f:validateRegex pattern=".{,10}" />
</h:inputText>
이 구성 요소 사용자가 f:validateLength
자신을 적용 할 수 것이다 그래서이 문제를 극복하기 위해 당신은 3 가지 옵션이 있습니다. 하지만 그때. 그는 자신의 f:validateRegex
을 더 이상 적용 할 수 없습니다.
또 다른 옵션은 구성 요소 사용자가 구성 요소 속성을 사용하여 빌드 유효성 검사를 비활성화 할 수있게하는 것입니다. 그러나 이것은 사용자가 길이를 줄이기로 결정한 경우에는 길이가 10
이라고 가정합니다.
가장 좋은 옵션 (imho)은 maxLength를 자체 속성으로 적용하고 max.에 대한 해당 옵션의 유효성을 검사하는 것입니다. 10 자리 :
<cc:interface >
<cc:attribute name="maxLength" required="false" default="10"/>
</cc:interface>
<cc:implementation>
<h:inputText id="myText">
<f:validateLength maximum="#{(cc.attrs.maxLength > 10)? 10 : cc.attrs.maxLength}" />
</h:inputText>
</cc:implementation>
사용이 지금과 같다 : 구성 요소 사용자가를 적용하기 위해 encapsuled editableValueHolder의 실제 이름에 대해 알 필요가 없다는 것을이 또한 장점이있다
<ns:myInput maxLength="15">
<!-- This will apply your contraint of 10 -->
</ns:myInput>
<ns:myInput maxLength="3">
<!-- This will apply the component users constraint of 3 -->
</ns:myInput>
, f:validateLength
.
또한 인 경우 실제로은 구성 요소 내부의 maxLength를 제한합니다. 구성 요소의 모양 (예 : 열 수, 페이지 당 항목 수 등)을 제어하지 않는 한 구성 요소는 설계된 데이터 유형의 모든 유스 케이스에 대해 작동 할 수 있어야합니다.
이 실험이 필요한 이유는 무엇입니까 (단 하나만 명백하게 간주됩니까)? 예상치 못한 행동이라고하셨습니까? 그렇다면 귀하의 관점에서 기대되는 행동은 무엇입니까? (''의'for' 속성은 중복되고 전혀 필요하지 않습니다.) –
Tiny
하나의 유효성 검사기가 실패하면 최종 유효성 검사 결과가 부정적 일 것으로 예상됩니다. 다음을 구현하려고합니다. 복합 컴포넌트를 사용하는 페이지에서보다 제한적인 맞춤 유효성 검사기와 함께 사용할 수있는 복합 컴포넌트의 기본 유효성 검사기. –
그런 다음,'Math.Min (10, customLimit);을 리턴하는 메소드와 함께'max = "# {bean.maxLength}"'를 왜 간단히하지 않습니까? – dognose