--- {"id":"form-validation","title":"폼 검증·저장·복구","category":"업무 패턴","order":71,"summary":"오류 위치, 지속 안내, 재제출과 실제 저장 결과를 하나의 계약으로 묶습니다.","status":"문서 기준 · UI 미검증","references":["patterns/forms-pattern/index"]} --- # 폼 검증·저장·복구 ## 작업 흐름 입력 → 클라이언트 보조 검증 → 서버 검증 → 실제 저장 → 결과 안내. 저장 성공 메시지는 서버의 업무 성공을 확인한 뒤 표시합니다. - VAL-01 MUST: 필요한 데이터만 요청하고 관련 필드는 제목과 설명으로 묶습니다. - VAL-02 MUST: 필드 오류와 전체 요청 실패를 구분하고 오류가 수정될 때까지 찾을 수 있게 합니다. - VAL-03 MUST: 네트워크 오류 후 유효한 입력을 유지하고 제출 잠금을 해제할 수 있게 합니다. - VAL-04 MUST: 서버가 거절한 값의 이유와 복구 행동을 안전한 문구로 제공합니다. - VAL-05 SHOULD: 제출 전에는 조합 중·입력 중인 값에 성급한 오류를 남발하지 않습니다. - VAL-06 MUST: 비밀번호·토큰을 복구 편의 목적으로 브라우저 저장소에 쓰지 않습니다. ## VPS 기존 계약 실제 vps-forms 문서는 aria-invalid, 필드 그룹 직후 WickedFormNotice error, 필요한 경우 빨간 toast, 지속 오류를 요구합니다. toast는 지속 안내의 대체물이 아닙니다. WickedFormNotice 자체는 오류 필드의 id 연결을 자동으로 만들지 않으므로 각 폼에서 연결 여부를 검증해야 합니다. ## Blesta 기존 계약 PDT의 Form helper·action·method·CSRF·필드 이름·multipart를 유지합니다. 프런트의 제출 차단과 기존 중복 제출 방지기의 실행 순서가 충돌하지 않는지 확인합니다. ## 예시와 검증 공개 키 형식 오류를 입력 아래에 남기고 필드로 이동할 수 있게 합니다. 전체 요청 실패는 별도 요약으로 설명합니다. 단일 필드·여러 필드·서버 422·5xx·세션 만료·수정 후 재제출을 테스트합니다. 실제 고객 데이터 생성은 승인된 격리 환경에서만 수행합니다.