Hi all,
I am trying to get validation working in my Struts app and am having a
decidedly tough time considering this really shouldn't be so hard. I am
initially trying to get one field validated in one form. The validation
process seems to be working since my html source shows some javascript.
Here is what is produced:
<script type="text/javascript" language="Javascript1.1">
<!-- Begin
var bCancel = false;
function validateFamilyForm(form) {
if (bCancel)
return true;
else
return true;
}
//End -->
</script>
So I am guessing that at least parts of the validation framework are
working. It just doesn't seem to be picking up the validations I have
specified in my family_validation.xml file. Can anybody see from the code
below what I am doing to cause it not to create the other validation
javascript?
Cheers
Tom
What follows are the relevent pieces of xml and code: (I have also attached
the jsp and code to the email)
My JSP Page
-----------
.....
.....
<html:form action='/addFamily' method="post" onsubmit="return
validateFamilyForm(this);">
...
...
<html:text property='parentOneTitle' tabindex="1"/>
...
...
...
<html:javascript formName="FamilyForm"/>
-----------
My FamilyForm
----------------
public final class FamilyForm extends AbstFormBase (AbstFormBase extends
ValidatorForm)
...
...
public String getParentOneTitle() {
return family.getParentOneTitle();
}
public void setParentOneTitle(String _p1_title) {
family.setParentOneTitle(_p1_title);
}
(This form does not have the reset and validate methods as required by
ValidatorForm)
-----------------
Struts Config XML
-----------------
....
<form-bean name="FamilyForm"
type="com.camp.forms.family.FamilyForm"/>
....
<!-- AddFamily Action -->
<action path="/addFamily"
type="com.camp.actions.family.addFamilyAction"
name="FamilyForm"
scope="session"
validate="true"
input="/addFamily.jsp"
parameter="submit">
<forward name="failure" path="/addFamily.jsp"/>
<forward name="menu" contextRelative="true"
path="/jsp/menu/Menu.do" redirect="true"/>
</action>
....
<!-- Validator Configuration -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames"
value="/WEB-INF/conf/validation/validator-rules.xml,
/WEB-INF/conf/validation/family_validation.xml"/>
</plug-in>
....
....
-----------------
family_validation.xml
---------------------
<form-validation>
<formset>
<form name="FamilyForm">
<field property="parentOneTitle"
depends="required,mask,minlength">
<arg key="error.required" position="0"/>
<arg name="minlength" key="${var:minlength}"
resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^\w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
------------------
<!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">
<!--
$Id: validator-rules.xml 159291 2005-03-28 20:19:29Z niallp $
This file contains the default Struts Validator pluggable validator
definitions. It should be placed somewhere under /WEB-INF and
referenced in the struts-config.xml under the plug-in element
for the ValidatorPlugIn.
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
/WEB-INF/validation.xml"/>
</plug-in>
These are the default error messages associated with
each validator defined in this file. They should be
added to your projects ApplicationResources.properties
file or you can associate new ones by modifying the
pluggable validators msg attributes in this file.
# Struts Validator Error Messages
errors.required={0} is required.
errors.minlength={0} can not be less than {1} characters.
errors.maxlength={0} can not be greater than {1} characters.
errors.invalid={0} is invalid.
errors.byte={0} must be a byte.
errors.short={0} must be a short.
errors.integer={0} must be an integer.
errors.long={0} must be a long.
errors.float={0} must be a float.
errors.double={0} must be a double.
errors.date={0} is not a date.
errors.range={0} is not in the range {1} through {2}.
errors.creditcard={0} is an invalid credit card number.
errors.email={0} is an invalid e-mail address.
Note: Starting in Struts 1.2.0 the default javascript definitions have
been consolidated to commons-validator. The default can be overridden
by supplying a <javascript> element with a CDATA section, just as
in struts 1.1.
-->
<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"/>
<validator name="requiredif"
classname="org.apache.struts.validator.FieldChecks"
method="validateRequiredIf"
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"/>
<validator name="validwhen"
msg="errors.required"
classname="org.apache.struts.validator.validwhen.ValidWhen"
method="validateValidWhen"
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"/>
<validator name="minlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMinLength"
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"
depends=""
msg="errors.minlength"
jsFunction="org.apache.commons.validator.javascript.validateMinLength"/>
<validator name="maxlength"
classname="org.apache.struts.validator.FieldChecks"
method="validateMaxLength"
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"
depends=""
msg="errors.maxlength"
jsFunction="org.apache.commons.validator.javascript.validateMaxLength"/>
<validator name="mask"
classname="org.apache.struts.validator.FieldChecks"
method="validateMask"
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"
depends=""
msg="errors.invalid"/>
<validator name="byte"
classname="org.apache.struts.validator.FieldChecks"
method="validateByte"
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"
depends=""
msg="errors.byte"
jsFunctionName="ByteValidations"/>
<validator name="short"
classname="org.apache.struts.validator.FieldChecks"
method="validateShort"
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"
depends=""
msg="errors.short"
jsFunctionName="ShortValidations"/>
<validator name="integer"
classname="org.apache.struts.validator.FieldChecks"
method="validateInteger"
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"
depends=""
msg="errors.integer"
jsFunctionName="IntegerValidations"/>
<validator name="long"
classname="org.apache.struts.validator.FieldChecks"
method="validateLong"
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"
depends=""
msg="errors.long"/>
<validator name="float"
classname="org.apache.struts.validator.FieldChecks"
method="validateFloat"
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"
depends=""
msg="errors.float"
jsFunctionName="FloatValidations"/>
<validator name="double"
classname="org.apache.struts.validator.FieldChecks"
method="validateDouble"
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"
depends=""
msg="errors.double"/>
<validator name="date"
classname="org.apache.struts.validator.FieldChecks"
method="validateDate"
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"
depends=""
msg="errors.date"
jsFunctionName="DateValidations"/>
<validator name="intRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateIntRange"
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"
depends="integer"
msg="errors.range"/>
<validator name="floatRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateFloatRange"
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"
depends="float"
msg="errors.range"/>
<validator name="doubleRange"
classname="org.apache.struts.validator.FieldChecks"
method="validateDoubleRange"
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"
depends="double"
msg="errors.range"/>
<validator name="creditCard"
classname="org.apache.struts.validator.FieldChecks"
method="validateCreditCard"
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"
depends=""
msg="errors.creditcard"/>
<validator name="email"
classname="org.apache.struts.validator.FieldChecks"
method="validateEmail"
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"
depends=""
msg="errors.email"/>
<validator name="url"
classname="org.apache.struts.validator.FieldChecks"
method="validateUrl"
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"
depends=""
msg="errors.url"/>
<!--
This simply allows struts to include the validateUtilities into a page, it should
not be used as a validation rule.
-->
<validator name="includeJavaScriptUtilities"
classname=""
method=""
methodParams=""
depends=""
msg=""
jsFunction="org.apache.commons.validator.javascript.validateUtilities"/>
</global>
</form-validation>
<!DOCTYPE form-validation
PUBLIC "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.0//EN"
"http://jakarta.apache.org/commons/dtds/validator_1_0.dtd">
<form-validation>
<formset>
<form name="FamilyForm">
<field property="parentOneTitle" depends="required,mask,minlength">
<arg key="error.required" position="0"/>
<arg name="minlength" key="${var:minlength}" resource="false" position="1"/>
<var>
<var-name>mask</var-name>
<var-value>^\w+$</var-value>
</var>
<var>
<var-name>minlength</var-name>
<var-value>5</var-value>
</var>
</field>
</form>
</formset>
</form-validation>
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!-- CaMP, the open source camp management system -->
<!-- -->
<!-- Distributable under GPL license. -->
<!-- See terms of license at gnu.org. -->
<!-- -->
<!DOCTYPE struts-config PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 1.1//EN"
"http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">
<struts-config>
<!-- ========== Form Bean Definitions =================================== -->
<form-beans>
<form-bean name="searchForm" type="com.camp.forms.search.SearchForm">
<form-property name="criteria" type="com.camp.common.search.SearchItem[]"/>
</form-bean>
<form-bean name="FamilyForm" type="com.camp.forms.family.FamilyForm"/>
</form-beans>
<!-- ========== Global Forward Definitions ============================== -->
<global-forwards>
<!-- Family -->
<forward name="addFamily" path="/addFamily.do"/>
<forward name="searchFamily" path="/searchFamily.do"/>
<forward name="updateFamily" path="/updateFamily.do"/>
<forward name="deleteFamily" path="/deleteFamily.do"/>
<forward name="viewFamily" path="/viewFamily.do"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
<forward name="logoff" contextRelative="true" path="/jsp/logon/Logoff.do" redirect="true"/>
<!-- Camper stuff -->
<forward name="addCamper" contextRelative="true" path="/jsp/camper/addCamper.do" redirect="true"/>
<forward name="viewCamper" contextRelative="true" path="/jsp/camper/viewCamper.do" redirect="true"/>
<!-- Registration stuff -->
<forward name="viewRegistration" contextRelative="true" path="/jsp/registration/viewRegistration.do" redirect="true"/>
</global-forwards>
<!-- ========== Action Mapping Definitions ============================== -->
<action-mappings>
<action path="/addFamily"
type="com.camp.actions.family.addFamilyAction"
name="FamilyForm"
scope="session"
validate="true"
input="/addFamily.jsp"
parameter="submit">
<forward name="failure" path="/addFamily.jsp"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
<forward name="add_camper" contextRelative="true" path="/jsp/camper/addCamper.do" redirect="true"/>
</action>
<action path="/searchFamily"
type="com.camp.actions.family.searchFamilyAction"
name="searchForm"
scope="session"
validate="false"
input="/searchCriteriaFamily.jsp">
<forward name="search" path="/searchCriteriaFamily.jsp"/>
<forward name="choice" path="/displayResultsFamily.jsp"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
</action>
<action path="/updateFamily"
type="com.camp.actions.family.updateFamilyAction"
name="FamilyForm"
scope="session"
validate="true"
input="/updateFamily.jsp">
<forward name="failure" path="/updateFamily.jsp"/>
<forward name="show" path="/updateFamily.jsp"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
</action>
<action path="/deleteFamily"
type="com.camp.actions.family.deleteFamilyAction"
name="FamilyForm"
scope="session"
validate="false"
input="/searchCriteriaFamily.jsp"
parameter="submit">
<forward name="confirm" path="/deleteFamily.jsp"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
</action>
<action path="/viewFamily"
type="com.camp.actions.family.viewFamilyAction"
name="FamilyForm"
scope="session"
validate="false"
input="/searchCriteriaFamily.jsp"
parameter="submit">
<forward name="show" path="/viewFamily.jsp"/>
<forward name="menu" contextRelative="true" path="/jsp/menu/Menu.do" redirect="true"/>
</action>
</action-mappings>
<!-- Validator Configuration -->
<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
<set-property property="pathnames" value="/WEB-INF/conf/validation/validator-rules.xml, /WEB-INF/conf/validation/family_validation.xml"/>
</plug-in>
</struts-config>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]