AEM Forms에서는 대부분의 사용 사례를 충족하는 다양한 제출 옵션을 제공합니다.이러한 사전 정의된 제출 작업 외에도 AEM Forms에서는 사용자 정의 제출 핸들러를 작성하여 필요에 따라 양식 제출을 처리할 수 있습니다.
사용자 정의 제출 서비스를 작성하려면 다음 단계를 따르십시오
기존 AEM Forms Cloud Service 프로젝트가 있는 경우 다음을 수행할 수 있습니다. 사용자 정의 제출 서비스 작성으로 이동
IntelliJ를 시작하고 AEM 프로젝트를 엽니다. 라는 새 Java 클래스를 만듭니다. HandleRegistrationFormSubmission 아래 스크린샷에 표시된 대로
다음 코드는 서비스를 구현하기 위해 작성되었습니다
package com.aem.bankingapplication.core;
import java.util.HashMap;
import java.util.Map;
import com.google.gson.Gson;
import org.osgi.service.component.annotations.Component;
import com.adobe.aemds.guide.model.FormSubmitInfo;
import com.adobe.aemds.guide.service.FormSubmitActionService;
import com.adobe.aemds.guide.utils.GuideConstants;
import com.google.gson.JsonObject;
import org.slf4j.*;
@Component(
service=FormSubmitActionService.class,
immediate = true
)
public class HandleRegistrationFormSubmission implements FormSubmitActionService {
private static final String serviceName = "Core Custom AF Submit";
private static Logger logger = LoggerFactory.getLogger(HandleRegistrationFormSubmission.class);
@Override
public String getServiceName() {
return serviceName;
}
@Override
public Map<String, Object> submit(FormSubmitInfo formSubmitInfo) {
logger.error("in my custom submit service");
Map<String, Object> result = new HashMap<>();
logger.error("in my custom submit service");
String data = formSubmitInfo.getData();
JsonObject formData = new Gson().fromJson(data,JsonObject.class);
logger.error("The form data is "+formData);
JsonObject jsonObject = new JsonObject();
jsonObject.addProperty("firstName",formData.get("firstName").getAsString());
jsonObject.addProperty("lastName",formData.get("lastName").getAsString());
result.put(GuideConstants.FORM_SUBMISSION_COMPLETE, Boolean.TRUE);
result.put("json",jsonObject.toString());
return result;
}
}
ui.apps 노드를 확장하여 이라는 새 패키지를 만듭니다. HandleRegistrationFormSubmission 아래 스크린샷에 표시된 대로 apps 노드 아래에
아래에 .content.xml이라는 파일을 만듭니다. HandleRegistrationFormSubmission. 다음 코드를 복사하여 .content.xml에 붙여넣습니다
<?xml version="1.0" encoding="UTF-8"?>
<jcr:root xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:sling="http://sling.apache.org/jcr/sling/1.0"
jcr:description="Handle Registration Form Submission"
jcr:primaryType="sling:Folder"
guideComponentType="fd/af/components/guidesubmittype"
guideDataModel="xfa,xsd,basic"
submitService="Core Custom AF Submit"/>
값 submitService 요소는 일치해야 합니다. serviceName = "Core Custom AF Submit" FormSubmitActionService 구현.
변경 사항을 Cloud Manager 저장소에 푸시하기 전에 로컬 클라우드 지원 작성자 인스턴스에 코드를 배포하여 코드를 테스트하는 것이 좋습니다. 작성자 인스턴스가 실행 중인지 확인합니다.
클라우드 준비 작성자 인스턴스에 코드를 배포하려면 AEM 프로젝트의 루트 폴더로 이동하고 다음 명령을 실행합니다
mvn clean install -PautoInstallSinglePackage
이렇게 하면 코드가 작성자 인스턴스에 단일 패키지로 배포됩니다
로컬 인스턴스에서 코드를 확인한 후 클라우드 인스턴스에 코드를 푸시합니다.
변경 사항을 로컬 git 저장소로 푸시한 다음 cloud manager 저장소로 푸시합니다. 다음을 참조하십시오. Git 설정, AEM 프로젝트를 cloud manager 저장소로 푸시 및 개발 환경에 배포 문서.
파이프라인이 성공적으로 실행되면 아래 스크린샷과 같이 양식의 제출 액션을 사용자 지정 제출 핸들러에 연결할 수 있어야 합니다