I have an action for validating some fields in jsp. If this action returns input, it adds an appropriate field error. But after correcting the field and resubmitting the form, this will not resubmit; the field error will stay attached even if all the fields are correct.
Picture 1:
I have submitted the form with empty Surname field. An appropriate field error was added.
Picture 2:
I have then filled the Surname gap, but the error message is stuck and the form wont resubmit.
Validation:
public String validateForm() {
if (name == null || name.equals("")) {
addFieldError("name", "Name is required!");
return INPUT;
}
if (surname == null || surname.equals("")) {
addFieldError("surname", "Surname is required!");
return INPUT;
}
if (username == null || username.equals("")) {
addFieldError("username", "Username is required!");
return INPUT;
}
if (password == null || password.equals("")) {
addFieldError("password", "Password is required!");
return INPUT;
}
if (!passwordCheck.equals(password)) {
addFieldError("password", "Passwords do not match!");
addFieldError("passwordCheck", "");
return INPUT;
} else {
return SUCCESS;
}
}
Struts.xml:
<package name="actions" namespace="/authenticated/admin" extends="struts-default">
<action name="form">
<result>/authenticated/admin/inputAccountSave.jsp</result>
</action>
<action name="register" class="AccountAction" method="createAccount">
<result name="success">/success.jsp</result>
<result name="input">/authenticated/admin/inputAccountSave.jsp
</result>
</action>
</package>
<package name="validations" extends="struts-default">
<action name="validate" class="AccountAction" method="validateForm">
<result name="success" type="redirectAction">
<param name="actionName">register</param>
<param name="name">${name}</param>
<param name="surname">${surname}</param>
<param name="username">${username}</param>
<param name="password">${password}</param>
<param name="role">${role}</param>
</result>
<result name="input">/authenticated/admin/inputAccountSave.jsp
</result>
</action>
</package>
Form:
<s:form name="register" action="validate" >
<s:textfield name="name" label="Name" />
<s:textfield name="surname" label="Surname" />
<s:textfield name="username" label="Username" />
<s:password name="password" label="Password" />
<s:password name="passwordCheck" label="Confirm password" />
<s:select name="role" label="Role" list="{'MANAGER', 'ADMIN'}"></s:select>
<s:submit />
</s:form>
Thank you