Ich versuche, eigene Handle-Methode für Registrierungsformular zu erstellen. Es hat nur zwei Felder Vorname und Nachname. Unten ist der Beispiel-Java-Code.Abrufen von DropletException beim Erstellen von handleMethod
public class TestProfileFormHandler extends GenericFormHandler{
protected ProfileTools mProfileTools;
private MutableRepository mSampleRepository;
private String mCreateSuccessURL;
private String mCreateErrorURL;
public static final String FIRST_NAME = "firstName";
public static final String LAST_NAME = "lastName";
public boolean handleCreate(DynamoHttpServletRequest pRequest,DynamoHttpServletResponse pResponse)throws ServletException,IOException{
MutableRepository lSampleRepository = (MutableRepository) getSampleRepository();
MutableRepositoryItem lItem = null;
String lFirstName = pRequest.getParameter(FIRST_NAME);
String lLastName = pRequest.getParameter(LAST_NAME);
try {
Repository rep = getSampleRepository();
RepositoryItem lRepoItem = null;
lItem = lSampleRepository.createItem(lRepoItem.getRepositoryId(),"user");
lItem.setPropertyValue(FIRST_NAME,lFirstName);
lItem.setPropertyValue(LAST_NAME, lLastName);
String lRepositoryId = lItem.getRepositoryId();
lSampleRepository.addItem(lItem);
} catch (RepositoryException e) {
e.printStackTrace();
}
return checkFormRedirect(getCreateSuccessURL(), getCreateErrorURL(), pRequest, pResponse);
}
Unterhalb der jsp ist: register.jsp
<dsp:page>
<dsp:importbean bean="/atg/userprofiling/TestProfileFormHandler"/>
<dsp:getvalueof id="success" param="added"/>
<c:if test="${success eq true}">
Account created successfully.
</c:if>
<dsp:form name="registerForm" id="registerForm" method="post">
<div>
<label>First Name</label> <span>*: </span>
<dsp:input type="text" name="firstName" bean="TestProfileFormHandler.value.firstName" />
</div>
<div>
<label>Last Name</label> <span>*: </span>
<dsp:input type="text" name="lastName" bean="TestProfileFormHandler.value.lastName" />
</div>
<dsp:input type="hidden" value="/test/register.jsp?added=true" bean="TestProfileFormHandler.createSuccessURL"/>
<dsp:input type="hidden" value="/test/register.jsp?added=false" bean="TestProfileFormHandler.createErrorURL"/>
<dsp:input type="submit" value="Create Account" bean="TestProfileFormHandler.create"/>
</dsp:form>
jetzt bin ich DropletException
atg.droplet.DropletException: Can't find property: firstName in class com.tap.userprofiling.TestProfileFormHandler
at atg.droplet.DropletDescriptor.<init>(DropletDescriptor.java:813)
at atg.droplet.validation.ValidatingDropletDescriptorManager$ValidationDropletDescriptor.<init>(ValidatingDropletDescriptorManager.java:416)
at atg.droplet.validation.ValidatingDropletDescriptorManager.createDropletDescriptor(ValidatingDropletDescriptorManager.java:219)
at atg.droplet.DropletDescriptorManager.getDropletDescriptor(DropletDescriptorManager.java:1279)
at atg.droplet.DropletDescriptorManager.getDropletDescriptor(DropletDescriptorManager.java:1232)
Truncated. see log file for complete stacktrace
bekommen, wenn jemand weiß, was dieser Fehler ist, bitte hilf mir.
Vielen Dank im Voraus.
Warum benutzen Sie nicht den OOTB ProfileFormHandler, der all diese Funktionalität bereits eingebaut hat? Scheint so, als ob Sie eine Menge Zeit damit verschwenden, das Rad neu zu erfinden! – bated