Ray,

I have two issues with your below files.

1. In your validation.xml, you list "arg" tags without a position number.
You should be using arg0, arg1, arg2, or arg3.  In future versions (possibly
in 1.2.4 but I'm not positive this early on a Sunday morning) 'arg0' will
become 'arg position="0"' with arg1, arg2, and arg3 following similar
patterns of replacing the position's value with the correct number.

2. In the "MessageResources.properties" file you cut/pasted into this email,
you have spaces before most of the validator key names.  I'm not sure if
that is "legal" so be warned that it MIGHT cause additional problems.

Additionally, for your struts-config.xml plug-in definition, you might want
to try the stopOnFirstError property.  The behavior might be useful if you
try it out.  Using it would change your plug-in definition to:

<plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames"
          value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
        <set-property property="stopOnFirstError" value="false"/>
</plug-in>

Regards,
David

P.S. Sorry I didn't check my email sooner but, while I've been unable to
sleep more than 20 minutes tonight, I read a book instead of using the
computer. Shame on me, eh? :)


-----Original Message-----
From: Ray [mailto:[EMAIL PROTECTED]
Sent: Sunday, December 05, 2004 1:18 AM
To: Struts Users Mailing List
Subject: Re: Cannot load a validator resource from
'/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml'


Yep. Sure. Thanks ... :-)

------ MessageResource.properties -------------

# Resources file for STRUTS

# Errors
errors.header=<font color="red">
errors.footer=</font>

  # -- validator --
  errors.invalid={0} is invalid.
  errors.maxlength={0} can not be greater than {1} characters.
  errors.minlength={0} can not be less than {1} characters.
  errors.range={0} is not in the range {1} through {2}.
  errors.required={0} is required.
  errors.byte={0} must be an byte.
  errors.date={0} is not a date.
  errors.double={0} must be an double.
  errors.float={0} must be an float.
  errors.integer={0} must be a number.
  errors.long={0} must be an long.
  errors.short={0} must be an short.
  errors.creditcard={0} is not a valid credit card number.
  errors.email={0} is an invalid e-mail address.
  # -- other --
  errors.cancel=Operation cancelled.
  errors.detail={0}
  errors.general=The process did not complete. Details should follow.
  errors.token=Request could not be completed. Operation is not in sequence.


errors.login=<br/>password is incorrect
errors.name.taken=name already taken

errors.page.not.found=page not found
errors.could.not.send.email= could not send the email
message.<br/>Please contact the school by telephone
errors.cannot.delete.home.page=You cannot delete the home page!
errors.page.in.use=This page is being used by the page calendar

EditForm.title=title
EditForm.summary=summary
EditForm.orderOfContent=Content order


# mail form
EmailForm.name=Name
EmailForm.address=Address
EmailForm.telephoneNumber=Telephone number
EmailForm.emailAddress=Email address

#Template form
TemplateForm.name=Name



#Content types form
ContentTypesForm.orderOfType=Sequence number
ContentTypesForm.typeOfContent=Content name


------ End of MessageResource.properties -------------

------ validator-rules.xml ------
<!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";>
<!--
   $Header:
C:/cvsrepo/projects/Projects/StarStream/organisation/src/jsp/WEB-INF/validat
or-rules.xml,v
1.1 2004/11/22 06:14:47 raymond Exp $
   $Revision: 1.1 $
   $Date: 2004/11/22 06:14:47 $

    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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        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,
                        javax.servlet.http.HttpServletRequest"
               depends="float"
                   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,
                        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,
                        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,
                        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>

------ End of validator-rules.xml ------

------ validation.xml ----

<?xml version="1.0" encoding="ISO-8859-1" ?>

<!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 rules for the Organisation website -->

<form-validation>
     <global>
         <constant>
             <constant-name>phone</constant-name>
             <constant-value>^\(?(\d{3})\)?[-| ]?(\d{3})[-|
]?(\d{4})$</constant-value>
         </constant>
         <constant>
             <constant-name>zip</constant-name>
             <constant-value>^\d{5}\d*$</constant-value>
         </constant>
         <constant>
             <constant-name>onlineReferenceMask</constant-name>
             <constant-value>^[a-zA-Z0-9]{2,20}$</constant-value>
         </constant>

     </global>
     <formset>
         <constant>
             <constant-name>zip</constant-name>
             <constant-value>^\d{5}(-\d{4})?$</constant-value>
         </constant>

         <form name="EditForm">

             <field property="title"
                 depends="required">
                 <arg key="EditForm.title"/>
             </field>

             <field property="summary"
                 depends="required">
                 <arg key="EditForm.summary"/>
             </field>

             <field property="orderOfContent" depends="integer">
                 <arg key="EditForm.orderOfContent"/>
             </field>

         </form>

         <form name="EmailForm">

             <field property="name"
                    depends="required">
                 <arg key="EmailForm.name"/>
             </field>

            <field property="address"
                    depends="required">
                 <arg key="EmailForm.address"/>
             </field>

            <field property="telephoneNumber"
                    depends="required">
                 <arg key="EmailForm.telephoneNumber"/>
             </field>

            <field property="emailAddress"
                    depends="required,email">
                <arg key="EmailForm.emailAddress"/>
            </field>

       </form>

       <form name="OptionsForm">

           <field property="organisation"
                  depends="required">
               <arg key="OptionsForm.organisation"/>
           </field>

          <field property="director"
                  depends="required">
               <arg key="OptionsForm.director"/>
           </field>

          <field property="addressLine1"
                  depends="required">
               <arg key="OptionsForm.addressLine1"/>
           </field>

          <field property="town"
                  depends="required">
              <arg key="OptionsForm.town"/>
          </field>

          <field property="county"
                  depends="required">
              <arg key="OptionsForm.county"/>
          </field>

          <field property="postcode"
                  depends="required">
              <arg key="OptionsForm.postcode"/>
          </field>

          <field property="telephoneNumber"
                  depends="required">
              <arg key="OptionsForm.telephoneNumber"/>
          </field>

          <field property="emailAddress"
                  depends="required, email">
              <arg key="OptionsForm.emailAddress"/>
          </field>

       </form>

         <form name="ContentTypesForm">

             <field property="orderOfType" depends="integer">
                 <arg key="ContentTypesForm.orderOfType"/>
             </field>

             <field property="typeOfContent" depends="required">
                 <arg key="ContentTypesForm.typeOfContent"/>

             </field>

       </form>

     </formset>
</form-validation>

------ end of validation.xml ----

The struts-config.xml header reads:


<!DOCTYPE struts-config PUBLIC
           "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN"
           "http://struts.apache.org/dtds/struts-config_1_2.dtd";>


Thanks again; any help is very much appreciated.

David G. Friedman wrote:

> Ray,
>
> Can you include your validatoin.xml and validator-rules.xml files plus
copy
> in the application resources from any files it may be using for messages?
>
> regards,
> David
>
> -----Original Message-----
> From: Ray [mailto:[EMAIL PROTECTED]
> Sent: Saturday, December 04, 2004 5:33 AM
> To: [EMAIL PROTECTED]
> Subject: Cannot load a validator resource from
> '/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml'
>
>
> Hi there.
>
> I've been fighting with a weird problem for a while now. The app I'm
> running at home, won't load when I deploy it on my ISPs server.
>
> The first problem was that Struts refused to load the struts-config.xml
> file. I managed to get round it by stripping the DTD definition from the
> start of struts-config.xml. Now though, I have another problem; Struts
> won't load the validation files. I get the following error when the
> application starts up:
>
> ---------------------------------------------------------------
> javax.servlet.UnavailableException: Cannot load a validator resource
> from '/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml'
>       at
> org.apache.struts.validator.ValidatorPlugIn.init(ValidatorPlugIn.java:174)
>       at
>
org.apache.struts.action.ActionServlet.initModulePlugIns(ActionServlet.java:
> 839)
>       at org.apache.struts.action.ActionServlet.init(ActionServlet.java:332)
>       at javax.servlet.GenericServlet.init(GenericServlet.java:256)
>       at
>
org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:93
> 5)
>       at
org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:823)
>       at
>
org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:
> 3427)
>       at
> org.apache.catalina.core.StandardContext.reload(StandardContext.java:2574)
>       at
>
org.apache.catalina.servlets.ManagerServlet.reload(ManagerServlet.java:802)
>       at
>
org.apache.catalina.servlets.HTMLManagerServlet.reload(HTMLManagerServlet.ja
> va:501)
>       at
>
org.apache.catalina.servlets.HTMLManagerServlet.doGet(HTMLManagerServlet.jav
> a:151)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
>       at
>
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Application
> FilterChain.java:247)
>       at
>
org.apache.catalina.core.ApplicationFilterChain.access$000(ApplicationFilter
> Chain.java:98)
>       at
>
org.apache.catalina.core.ApplicationFilterChain$1.run(ApplicationFilterChain
> .java:176)
>       at java.security.AccessController.doPrivileged(Native Method)
>       at
>
org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterCh
> ain.java:172)
>       at
>
org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.ja
> va:256)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:643)
>       at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>
org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.ja
> va:191)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:643)
>       at
>
org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase
> .java:551)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:641)
>       at
>
org.apache.catalina.valves.CertificatesValve.invoke(CertificatesValve.java:2
> 46)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:641)
>       at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
> org.apache.catalina.core.StandardContext.invoke(StandardContext.java:2422)
>       at
>
org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:180
> )
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:643)
>       at
>
org.apache.catalina.valves.ErrorDispatcherValve.invoke(ErrorDispatcherValve.
> java:171)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:641)
>       at
>
org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:163
> )
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:641)
>       at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at
>
org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java
> :174)
>       at
>
org.apache.catalina.core.StandardPipeline$StandardPipelineValveContext.invok
> eNext(StandardPipeline.java:643)
>       at
>
org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:480)
>       at org.apache.catalina.core.ContainerBase.invoke(ContainerBase.java:995)
>       at 
> org.apache.ajp.tomcat4.Ajp13Processor.process(Ajp13Processor.java:457)
>       at org.apache.ajp.tomcat4.Ajp13Processor.run(Ajp13Processor.java:576)
>       at java.lang.Thread.run(Thread.java:536)
> ----------------------------------------------------------------
>
> I've tried removing the DTD definitions from validation.xml and
> validation-rules.xml, and still no joy.
>
> Has anyone got any ideas? I'm a bit lost ....
>
> I'm running Struts Version 1.2.4


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to