2011-04-19 2 views
1

나는 f:convertNumber이 첨부 된 h:inputText입니다. 로캘은 de으로 설정됩니다.h : inputText에 대한 구분 기호 구분자를 어떻게 금지합니까?

로캘에 따르면 소수 구분 기호는 "이고 그룹 구분 기호는"입니다.

사용자가 "72,5"를 입력하면 입력이 올바르게 "72 반"으로 해석됩니다. 그러나 72.5를 입력하면 입력이 725로 해석됩니다.

사용자가 실수로 "."를 치면 경고 또는 오류 메시지가 표시되지 않으므로 입력이 잘못 될 수 있습니다. 대신에 ",".

사용자 정의 유효성 검사기 또는 자바 스크립트를 작성하지 않고이 동작을 방지하는 방법이 있습니까? 내가 jsf 표준 변환기 또는 유효성 검사기를 사용하여 생각하십니까?

지금까지 을 패턴이있는 f:convertNumberf:convertNumber과 함께 시도했지만 모두 작동하지 않았습니다.

답변

2

변환은 유효성 검사 전에 수행됩니다. 따라서 (사용자 정의) 유효성 검사기의 경우 이미 너무 늦었습니다. 사용자 지정 변환기를 만들어 거기에서 "유효성을 검사"해야합니다.

+0

감사합니다. BalusC. 따라서 가장 쉬운 방법은 "."을 대체하는 사용자 지정 변환기를 작성하는 것입니다. ","그리고 jsf의 표준 numberConverter를 내 사용자 정의 호출에서 호출하십시오. 그러면 두 구분 기호가 소수 구분 기호로 허용됩니다. 또는 "을 (를) 감지하면 경고 메시지를 표시 할 수 있습니다." 회심을 실패하게하십시오. –

+1

준비가되면'NumberConverter'를 확장하고'super'를 호출하십시오. 코드 논리에 관해서는 완전히 명확하지 않은 기능 요구 사항에 따라 달라집니다. 조용히 변환하거나 오류를 표시 하시겠습니까? 클라이언트 **가 의도적으로 1,000 개를 사용하여 1,000 개를 표시하고 그렇지 않은 경우를 나타내는 경우 어떻게됩니까? 그것은 복잡하다 :) – BalusC

+0

오류 메시지를 보여주는 것이 가장 안전 할 것이라고 나는 생각한다. 그것은 약물 복용량을 저장하는 의료 응용 프로그램입니다 ... –