AEM as a Cloud Service: 대화 상자 제출이 사용자 지정 스크립트로 필수 필드 유효성 검사를 무시함
이 문서에서는 일반적으로 표준 유효성 검사를 재정의하는 사용자 지정 클라이언트측 스크립트로 인해 필수 필드가 채워지지 않더라도 구성 요소 대화 상자를 제출할 수 있는 Adobe Experience Manager as a Cloud Service 문제를 해결하는 방법에 대해 설명합니다.
설명 description
환경
Adobe Experience Manager as a Cloud Service(AEMaaCS) 및 AEM SDK 환경.
증상
- 구성 요소 대화 상자에 사용자 지정 유효성 검사가 포함된 텍스트 필드와 필수(으)로 표시된 경로 필드가 있습니다.
- AEM SDK 환경에서는 필수 필드가 비어 있거나 유효성 검사가 실패하면 대화 상자를 제출할 수 없습니다.
- AEM as a Cloud Service 환경에서는 필수 필드가 채워지지 않았거나 유효성 검사가 실패한 경우에도 대화 상자를 통해 제출할 수 있습니다.
- 사용자 지정 유효성 검사기에 오류 메시지가 표시되지만 완료 단추를 클릭해도 양식이 제출됩니다.
필드 구성 예:
<alt
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/textfield"
validation="testing.test"
fieldDescription="Alternative text for image"
fieldLabel="Alt text"
name="./alt"/>
<linkURL
jcr:primaryType="nt:unstructured"
sling:resourceType="granite/ui/components/coral/foundation/form/pathfield"
required="{Boolean}true"
fieldDescription="Link"
fieldLabel="Link"
name="./linkURL"/>
원인
사용자 지정 클라이언트측 유효성 검사 스크립트는 대화 상자 제출 단추에 대한 전역 클릭 처리기를 등록합니다. 이 처리기는 표준 Granite UI 유효성 검사를 무시하고 모든 대화 상자 제출을 가로채고 양식을 직접 제출합니다. 따라서 필수 필드가 비어 있거나 사용자 지정 유효성 검사에 실패하는 경우에도 대화 상자가 제출됩니다.
해결 방법 resolution
아래 단계에 따라 문제를 해결하십시오.
- 사용자 지정 클라이언트측 유효성 검사 스크립트, 특히 대화 상자 제출을 위한 이벤트 처리기를 등록하는 스크립트를 검토합니다(대화 상자 제출 단추의 처리기 등).
- 사용자 지정 처리기가 의도한 대화 상자 또는 필드에 대한 제출만 가로채는지 확인합니다(예: 작업을 수행하기 전에 특정 다중 필드 또는 대화 상자 컨텍스트를 확인하는 방법).
- 처리기가 의도한 대화 상자를 처리하고 있는지 확인한 후에만
e.stopPropagation()및e.preventDefault()이(가) 호출되도록 처리기를 리팩터링합니다. 다른 모든 대화 상자의 경우 AEM의 표준 유효성 검사 및 제출 흐름이 방해 없이 진행될 수 있도록 하십시오. - 의도한 대화 상자 이외의 대화 상자에 대한 양식을 직접 제출하는 대체 로직을 제거합니다.
- 애플리케이션을 재배포합니다.
- 이제 필수 필드가 채워지지 않았거나 유효성 검사가 실패하면 대화 상자 제출이 올바르게 차단되는지 확인합니다.
recommendation-more-help
experience-cloud-kcs-help-kbarticles