2012-06-25 2 views
0

WebObjects 앱에서 필드 유효성 검사를 수행하는 좋은 방법을 찾으려고합니다. 텍스트 필드가 있고 그것에 숫자 포맷터를 연결하면 기본 동작은 사용자가 유효한 숫자를 입력 한 경우 숫자를 구문 분석하거나 사용자가 숫자를 입력하면 잘못된 숫자가 인 것 같습니다. 사용자가 입력 한 값을 무시하십시오. WO는 액션 메소드에 도달 할 때까지 비 숫자 입력을 이미 무시했기 때문에 저장 메소드 또는 액션 메소드에서 유효성 검사를 수행 할 수 없습니다. WebObjects 앱에 사용자 입력의 유효성을 검사하는 표준/권장 방법이있어 유효하지 않은 입력을 무시하는 것보다 잘못된 입력에 대해 경고를받을 수 있습니까?WebObjects 필드 유효성 검사

이 페이지는 http://en.wikibooks.org/wiki/WebObjects/EOF/Using_EOF/Validation 주장과 EOF가 "검증 메커니즘의 놀라운 배열"심지어이 에 내장 된 방법은 부적절 데이터를 입력에서에게 사용자를 방지,하지만 난이되지 않았 음을 암시 WO 어떤 문서 나 예제를 찾을 수 있습니다 (사실 내장 된 방법이있는 경우). 부적절한 데이터를 방지하기 위해 맞춤 자바 스크립트 검사기를 사용하는 것은 악몽과 같은 것처럼 보입니다. JS가 백엔드 형식 지정자/파서가 처리하는 모든 동일한 가장자리 사례를 인식하고 처리 할 수있는 방법을 찾는 것입니다. WO가 JS 유효성 검사에 포맷터 가장자리 케이스를 전파하는 기본 제공 방법을 실제로 갖고 있다면 좋을 것입니다.

위의 링크는 또한 "는 EO 또는 포맷터가 할당하는 동안 유효성 검사에 실패 할 때"호출되는 WOComponent에서 validationFailedWithException 방법이 말한다,하지만 어떻게 내가이 포맷터이 아닌 번호 예를 들어, 경우 유효성 검사에 실패 할 수 있습니다 위? 숫자가 아닌 숫자가 입력되었지만 예외가 validationFailedWithException 메서드에 전달되지 않으면 형식 메서드에서 예외를 throw하도록 시도했습니다. 누구든지 validationFailedWithException()에 대한 호출을 발생시키는 포맷터에서 예외를 트리거하는 방법을 알고 있습니까? 그리고 그것은 심지어 가장/추천 된 방법입니까? 누구든지 더 나은 방법을 알고 있습니까?

답변

1

저는 validationFailedWithException이 모든 포맷 오류에 대해 호출된다는 것을 확신합니다. 거기에 ParseException을 래핑하는 NSValidationException을 수신해야합니다. 이 메서드는 대개 바인딩이 포함 된 구성 요소에서 호출됩니다. 캐럿 (^) 바인딩에서 건너 뛸 수 있습니다.

모든 표준 숫자 포맷터는 이미 ParseException을 발생시킵니다 (Format.parse (String) 참조).

WebObjects의 유효성 검사 처리는 상당히 복잡 할 수 있습니다. 이는 실제로 사용자 요구에 따라 달라집니다. 그러나 JavaScript 또는 Ajax를 염두에두고 설계되었습니다. Wonder의 새로운 접근 방식은 클라이언트 측을 통합 할 수 있지만 경험이 없습니다.

정상 검증 순서는 다음

  • 필요는 포매터 대상 유형에
  • 호 AttributeName에가 속성 이름 값을 수신하는 대상체에 validateAttributeName 방법 입력 변환

이 시퀀스에서 실패하면 validationFailedWithException이 호출됩니다.

엔터프라이즈 개체를 저장하는 동안 "validateFor ..."가 개체에 대해 호출됩니다. 이 시점에서 예외는 귀하의 조치 방법에 포착되어야합니다.

그래서 유효성 검사 오류를 처리 할 두 가지 포인트가 있습니다. "구문 적"오류는 validationFailedWithException에서 처리해야합니다.이 시점 이후에는 유효한 입력 값을 얻습니다. 액션 메소드 또는 validateFor ... (예 : validateForSave)에서 그 이상의 객체 구조를 수동으로 더 확인할 수 있습니다.

+0

응답 해 주셔서 감사합니다. 내 코드에 몇 가지 실수가있다 : – Troy

+0

여기 내 마지막 응답의 나머지 부분이있다 ... 실수 : (1) 관련 Format 메서드는 parseObject (...)가 아닌 parseObject (...)이고 (2) 예외가 ParseException이어야한다는 것을 알지 못했습니다. (3) WOTextField 및 ERXWOTextField 대신 항상 사용되도록 구성된 WOTextField에 대한 래퍼 구성 요소를 작성한 회사입니다. 그것은 validationFailedWithException()에서 ParseException을 수신하는 구성 요소이므로 부모 구성 요소의 유효성 검사 ...() 메소드까지 예외를 전달하도록 해당 구성 요소를 변경해야했습니다. 희망은 다른 사람을 돕습니다. – Troy