davout
Joined: 01 Apr 2007 Posts: 1
|
Posted: Sun Apr 01, 2007 3:01 pm Post subject: Struts 1.2 validation not working! |
|
|
I've added Struts validation to my application and I'm getting an exception when I try to use the 'required' validation type.
My app is created using the MyEclipse IDE, which I believe uses Struts 1.2. Separately I downloaded an archived copy of Struts 1.2.7 and compared the MyEclipse 'validator-rules.xml' file the r1.2.7 version and they are both the same.
Here's the code...
The 'validation.xml' file...
| Code: |
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE form-validation PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN" "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<formset>
<form name="impactNegationEditForm">
<field property="title" depends="required">
<arg0 key="label.title"/>
</field>
</form>
</formset>
</form-validation>
|
the start of the 'validation-rules.xml' file...
| Code: |
<!DOCTYPE form-validation PUBLIC
"-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.1.3//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
<global>
<validator name="required"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequired"
methodParams="java.lang.Object,
org.apache.commons.validator.ValidatorAction,
org.apache.commons.validator.Field,
org.apache.struts.action.ActionMessages,
org.apache.commons.validator.Validator,
javax.servlet.http.HttpServletRequest"
msg="errors.required"/>
|
the related action class...
| Code: |
public class ImpactNegationEditAction extends AbstractImpactNegationAction
implements EntityIDs, ImpactNegationIDs {
public void save_onClick(FormActionContext aCtx) {
ImpactNegationEditForm aForm = (ImpactNegationEditForm) aCtx.form();
aCtx.addErrors(aForm.validate(aCtx.mapping(),aCtx.request()));
if (aCtx.hasErrors() == false) {
// is add?
if (aForm.getImpactNegationIDInt() == ID_UNASSIGNED) {
// verify title is unique
try {
ImpactNegation anOther = getManager(aCtx).findByTitle(aForm.getTitle());
if (anOther != null) {
addFieldError(aCtx,"title","error.duplicateField","Title");
}
|
the related form...
| Code: |
public abstract class AbstractSorForm extends FWValidatorForm {
}
public class ImpactNegationEditForm extends AbstractSorForm {
private static final long serialVersionUID = 3604637580339030809L;
private String fImpactNegationID;
private String fTitle;
private String fDesc;
private String fDisplayOrder;
private String fPercent;
private String fCaptionDetail = null;
private String fFormTitle = null;
public ImpactNegationEditForm() {
// TODO Auto-generated constructor stub
}
public String getDesc() {
return fDesc;
}
public void setDesc(String aDesc) {
fDesc = aDesc;
}
public String getDisplayOrder() {
return fDisplayOrder;
}
public int getDisplayOrderInt() {
return Integer.parseInt(fDisplayOrder);
}
public void setDisplayOrder(String aDisplayOrder) {
fDisplayOrder = aDisplayOrder;
}
public String getImpactNegationID() {
return fImpactNegationID;
}
public int getImpactNegationIDInt() {
return Integer.parseInt(fImpactNegationID);
}
public void setImpactNegationID(String aId) {
fImpactNegationID = aId;
}
public String getPercent() {
return fPercent;
}
public double getPercentDouble() {
return Double.parseDouble(fPercent);
}
public void setPercent(String aPercent) {
fPercent = aPercent;
}
public String getTitle() {
return fTitle;
}
public void setTitle(String aTitle) {
fTitle = aTitle;
}
public String getCaptionDetail() {
return fCaptionDetail;
}
public void setCaptionDetail(String aCaptionDetail) {
fCaptionDetail = aCaptionDetail;
}
public String getFormTitle() {
return fFormTitle;
}
public void setFormTitle(String aFormTitle) {
fFormTitle = aFormTitle;
}
}
|
the JSP body file...
| Code: |
<ctrl:headline caption="Impact Negation" detail="${impactNegationEditForm.captionDetail}" width="60%"/>
<html:form action="sor/admin/impact_negation/impact_negation_edit" >
<html:hidden property="impactNegationID"/>
<forms:message caption="Error" severity="error" formid="err"/>
<forms:message caption="Information" severity="information" formid="info"/>
<forms:form name="impactNegationEditForm"
type="edit"
caption="${impactNegationEditForm.formTitle}"
formid="impactNegationEditForm" width="60%">
<forms:text label="Title" property="title" required="true"/>
<forms:textarea label="Description" property="desc" cols="60" rows="6"/>
<forms:text label="Display order" property="displayOrder"/>
<forms:text label="Percent" property="percent"/>
<forms:buttonsection>
<forms:button styleId="btnBack" name="btnCancel" text="Cancel" />
<forms:button styleId="btnBack" name="btnRestore" text="Restore" />
<forms:button styleId="btnBack" name="btnSave" text="Save" />
</forms:buttonsection>
</forms:form>
</html:form>
|
the exception thrown when the form is validated...
| Code: |
ERROR: 18:54:18: org.apache.struts.validator.ValidatorForm: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest)
org.apache.commons.validator.ValidatorException: org.apache.struts.validator.FieldChecks.validateRequired(java.lang.Object, org.apache.commons.validator.ValidatorAction, org.apache.commons.validator.Field, org.apache.struts.action.ActionMessages, org.apache.commons.validator.Validator, javax.servlet.http.HttpServletRequest)
at org.apache.commons.validator.ValidatorAction.loadValidationMethod(ValidatorAction.java:627)
at org.apache.commons.validator.ValidatorAction.executeValidationMethod(ValidatorAction.java:557)
at org.apache.commons.validator.Field.validateForRule(Field.java:811)
at org.apache.commons.validator.Field.validate(Field.java:890)
at org.apache.commons.validator.Form.validate(Form.java:174)
at org.apache.commons.validator.Validator.validate(Validator.java:367)
at org.apache.struts.validator.ValidatorForm.validate(ValidatorForm.java:112)
at com.eis.sor.struts.action.impactnegation.ImpactNegationEditAction.save_onClick(ImpactNegationEditAction.java:84)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:585)
at com.cc.framework.adapter.struts.ActionUtil.handleFormAction(Unknown Source)
at com.cc.framework.adapter.struts.FWAction.handleFormAction(Unknown Source)
at com.cc.framework.adapter.struts.ActionUtil.execute(Unknown Source)
at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
at com.eis.sor.struts.action.common.AbstractSorAction.execute(AbstractSorAction.java:30)
at com.cc.framework.adapter.struts.FWAction.execute(Unknown Source)
at org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
at org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:226)
at org.apache.struts.action.ActionServlet.process(ActionServlet.java:1164)
at org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:415)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
|
Ideas??? |
|