2012-11-02 2 views
2

검증을 소개하는 기본적으로 두 가지 방법이 있습니다 : 당신이 선언적으로 그것을 하나struts2 - 선언적 유효성 검사를 사용하는 이유는 무엇입니까? struts2에서

    프로그램
  • , 또는
  • 을 할 수 있습니다.

프로그래밍 검증은 기본적으로 방법 void validate();이 구체화 될 필요가있는 액션 클래스의 인터페이스 Validatable를 구현하는 것을 포함한다. 유효성 검사 문제가 사용자에게 다시보고 될 경우 더 복잡한 인터페이스 ValidationAware이 있습니다.

유효성 검사에서 유효성을 검사 할 각 동작은 유효성 검사기가 XML 설명 언어를 사용하여 선언 된 myactionname-validation.xml이라는 자체 유효성 검사 파일을 가져옵니다. 나는 우리가 재사용 일반적인 검증 패턴을 돕기 위해 작은 크기의 검증 프레임 워크 (내부적으로 작성)로, 프로그래밍 검증 원리를 사용하는 일이 회사에서


. 그러나 struts2 책을 읽었습니다. 선언적 유효성 검사가 선호되는 방법입니다. 이 책은 에 대한 많은 지침을 제공합니다. 그러나은 선언적 유효성 검사를 설정하기가 어렵지만, 의 대상을 거의 접하지 않습니다. 왜 선언적 방법이 바람직합니다.

선언적 XML 스타일 구성에 찬성하는 일반적인 논거 중 일부가 있지만 실제로 적용 할 수는 없습니다.이 구성 (즉, 유효성 검사) 변경은 밀접하게 결합 된 것입니다. 조치 및 GUI에서 값을 수정하는 데 사용되는 모델로 처리됩니다. 이것은 재 컴파일없이 'on-the-fly'로 구성 할 수 있어야하는 것은 아닙니다.

struts2에서 선언적 스타일 유효성 검사를 사용하려면 어떤 인수가 필요합니까?

또 다른 XML 마크 업 방언으로 들어가서 별도의 validation.xml 파일을 처리하는 것이 가치가 있습니까? 프로그래밍 방식으로 작업하는 것이 더 쉽지 않을 수도 있으며, Java 소스 코드 (또는 선택한 IDE)가 리팩토링 도구, 구조화 된 검색 등을 제공 할 것이므로 XML 구성 지원은 종종 용인 될 수 있습니다.

+0

프로그래밍 방식을 선호하며 약 5 년 동안 프레임 워크를 사용해 왔습니다. –

답변

1

선언적 유효성 검사는 읽기 쉽고 강력하며 사용자 정의 할 수 있습니다. 잘 작성된 웹 응용 프로그램 (좋은 DTO 또는 VO 정의, 수행 할 모든 논리 작업마다 하나의 작업)에서 여러 가지 방법으로 공유 할 수 있습니다.

예를 들어, 방문자 유효성 검사기 (JSP의 개체 목록 유효성 검사)를 사용하는 경우 .xml 파일을 동작 패키지가 아닌 개체 패키지 (개체 이름 포함)에 넣고 사용하면 하나의 유효성 검사 규칙을 한 번 작성하고 원하는 횟수만큼 다시 사용할 수 있습니다.

저는 XML 구성에 대한 팬이 아니지만, 이전의 여러 프로젝트를 통해이 종류의 유효성을 완전히 발견했기 때문에 다시 오지 않을 것입니다.

당신이 알고 싶을 수도있는 조언이 있으시면 at this을보십시오.

+0

예를 들어 방문자 확인 도구로 +1합니다. –

0

가 쉽게 프로그래밍을 할 아닌가요 [...]

별로,이 중 상당히 어려워, 아니지만. 오류 메시지를 작성하는 것은 수동 프로세스이지만, 대부분의 사람들은 어쨌든 XML에서 할 수있는 모든 기능을 사용하지 않습니다.

[...] 어쩌면 더 유지 보수가 [...]

별로,이 중 상당히 어렵게되는 것은 아니다.

코드 gen이있는 코드베이스의 경우 IMO 빌드 XML은 Java를 빌드하는 것보다 쉽지만 대부분의 코드베이스는 해당 깊이의 코드 gen을 사용하지 않습니다.

사람이 읽을 수있는 문서를 만들려면 XML 코드와 주석은 Java 코드보다 훨씬 쉽게 처리 할 수 ​​있습니다.

나는 꽤 괜찮은 S2를 지원하는 IDE를 사용합니다. "코드에서이 코드를 작성하면 훨씬 쉽습니다."라고 생각한 적은 한번도 없었습니다. XML 유효성 검사에서 리팩터링을 사용하여 XML 대신 코드에 포함 시키길 바랬습니다.

중요한 점은 기존 메커니즘이 존재할 때이를 재사용한다는 것입니다. 이는 프레임 워크에 통합 된 사소하고 알려진 메커니즘이며 S2 앱에서 작업하는 모든 사람이 작동하는 방식을 알고 있습니다.

관련 문제