You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@struts.apache.org by Caroline Jen <ji...@yahoo.com> on 2004/09/22 20:55:51 UTC

What Are the Causes For Validation to Throw ClassCastException?

Do not understand the 'HTTP Status 500 -
java.lang.ClassCastException 
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)'


1. I have this plug-in by the very end of the
struts-config.xml file:

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

2. I have this action mapping in the struts-config.xml
file:

    <action
        path="/content/UpdateTitle"
        type="org.dhsinfo.content.doSomething1"
        name="editTitleForm"
        scope="request"
        validate="true"
        input=".frame.content">
       <forward
           name="success"
           path=".title.Confirmation"/>
    </action>

3. I have this <form-bean> inside the <form-beans>
element in the struts-config.xml file:

     <form-bean
        name="editTitleForm"
       
type="org.apache.struts.validator.DynaValidatorForm">
          <form-property
            name="page"
            type="java.lang.String"/>
          <form-property
            name="title"
            type="java.lang.String"/>
     </form-bean>

4. I have the validation.xml file in the
AppName/WEB-INF directory

4.1. I changed the beginning of the validation.xml
file to
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
):

4.2 my validation.xml file code is shown below

I got the HTTP Status 500 -
Servlet.service() for servlet action threw exception

java.lang.ClassCastException 
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)

code:

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

<!DOCTYPE form-validation PUBLIC
          "-//Apache Software Foundation//DTD Commons
Validator Rules Configuration 1.0//EN"
         
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
<form-validation>
   <global>
      <constant>
         <constant-name>postalCode</constant-name>
         <constant-value>^\d{5}\d*$</constant-value>  
      </constant>
   </global>

  <formset>

      <form name="editTitleForm">
         <field
            property="page"
            depends="required">
               <arg0 key="request.page"/>
         </field>
         <field
            property="title"
            depends="required">
               <arg0 key="insert.title"/>
         </field>
      </form>
   </formset>
</form-validation>
      



		
__________________________________
Do you Yahoo!?
New and Improved Yahoo! Mail - Send 10MB messages!
http://promotions.yahoo.com/new_mail 

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: What Are the Causes For Validation to Throw ClassCastException?

Posted by Matt Bathje <mp...@ntsource.com>.
Do you also have /AppName/WEB-INF/validator-rules.xml?
Without that the validation won't work. Also make sure that you have the 
proper version of the validator jar.

Assuming those things are correct, take a look through your tomcat logs, 
I bet you are actually getting an error of some sort.


Matt



Caroline Jen wrote:

> I have changed the property from 'page' to 'pg'.  The
> ClassCastException problem is gone.  However, the
> validation.xml that I put in the AppName/WEB-INF is
> not doing anything.
> 
> In my action mapping (struts-config.xml), I did set 
> 
>         validate="true"
> 
> and in my validation.xml, I have "required" set for
> the depends attribute for every single text field.
> 
>             depends="required"
> 
> I intentionally left every field in those forms blank
> and submit forms.  But, the Struts did not give me any
> warning about that I leave text fields blank.
> 
>  
> --- Matt Bathje <mp...@ntsource.com> wrote:
> 
> 
>>Caroline Jen wrote:
>>
>>
>>>Do not understand the 'HTTP Status 500 -
>>>java.lang.ClassCastException 
>>>
>>
> org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)'
> 
>>>
>>>1. I have this plug-in by the very end of the
>>>struts-config.xml file:
>>>
>>><plug-in
>>>
>>
> className="org.apache.struts.validator.ValidatorPlugIn">
> 
>>>   <set-property
>>>       property="pathnames"
>>>           
>>>
>>
> value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
> 
>>></plug-in>
>>>
>>>2. I have this action mapping in the
>>
>>struts-config.xml
>>
>>>file:
>>>
>>>    <action
>>>        path="/content/UpdateTitle"
>>>        type="org.dhsinfo.content.doSomething1"
>>>        name="editTitleForm"
>>>        scope="request"
>>>        validate="true"
>>>        input=".frame.content">
>>>       <forward
>>>           name="success"
>>>           path=".title.Confirmation"/>
>>>    </action>
>>>
>>>3. I have this <form-bean> inside the <form-beans>
>>>element in the struts-config.xml file:
>>>
>>>     <form-bean
>>>        name="editTitleForm"
>>>       
>>>
>>
> type="org.apache.struts.validator.DynaValidatorForm">
> 
>>>          <form-property
>>>            name="page"
>>>            type="java.lang.String"/>
>>>          <form-property
>>>            name="title"
>>>            type="java.lang.String"/>
>>>     </form-bean>
>>>
>>>4. I have the validation.xml file in the
>>>AppName/WEB-INF directory
>>>
>>>4.1. I changed the beginning of the validation.xml
>>>file to
>>>
>>
> "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
> 
>>>):
>>>
>>>4.2 my validation.xml file code is shown below
>>>
>>>I got the HTTP Status 500 -
>>>Servlet.service() for servlet action threw
>>
>>exception
>>
>>>java.lang.ClassCastException 
>>>
>>
> org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)
> 
>>>code:
>>>
>>><?xml version="1.0" encoding="ISO-8859-1" ?>
>>>
>>><!DOCTYPE form-validation PUBLIC
>>>          "-//Apache Software Foundation//DTD
>>
>>Commons
>>
>>>Validator Rules Configuration 1.0//EN"
>>>         
>>>
>>
> "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
> 
>>><form-validation>
>>>   <global>
>>>      <constant>
>>>         <constant-name>postalCode</constant-name>
>>>        
>>
>><constant-value>^\d{5}\d*$</constant-value>  
>>
>>>      </constant>
>>>   </global>
>>>
>>>  <formset>
>>>
>>>      <form name="editTitleForm">
>>>         <field
>>>            property="page"
>>>            depends="required">
>>>               <arg0 key="request.page"/>
>>>         </field>
>>>         <field
>>>            property="title"
>>>            depends="required">
>>>               <arg0 key="insert.title"/>
>>>         </field>
>>>      </form>
>>>   </formset>
>>></form-validation>
>>>      
>>
>>
>>It appears as though the problem is with your use of
>>a form-property 
>>called "page" - based on what I am seeing around
>>line 141 of the 
>>DynaValidatorForm code, if you have a property named
>>page, it MUST be an 
>>integer, otherwise classcastexception is thrown.
>>
>>I'm guessing this is to accomodate "paged" forms
>>(aka wizards)
>>
>>Try changing the property to have another name, and
>>I think it will fix 
>>your problem.
>>
>>
>>Matt

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


RE: What Are the Causes For Validation to Throw ClassCastException?

Posted by "David G. Friedman" <hu...@ix.netcom.com>.
Jen,

DynaValidatorForm ALREADY has a page field so leave it out:

http://struts.apache.org/api/org/apache/struts/validator/DynaValidatorForm.h
tml

As for your validation not working with "pg" that's because the validator
uses the field name "page" to figure out which validations to test in
multi-page validations.

Additionally, WHY are you requiring a page field in your formset?  It should
be a hidden variable out of the view of the user so there is no need to
validate it.  Without it, the plugIn should assume page=0 and do the most
basic of validations in your formset.

Regards,
David

-----Original Message-----
From: Caroline Jen [mailto:jiapei_jen@yahoo.com]
Sent: Wednesday, September 22, 2004 4:16 PM
To: Struts Users Mailing List
Subject: Re: What Are the Causes For Validation to Throw
ClassCastException?


I have changed the property from 'page' to 'pg'.  The
ClassCastException problem is gone.  However, the
validation.xml that I put in the AppName/WEB-INF is
not doing anything.

In my action mapping (struts-config.xml), I did set

        validate="true"

and in my validation.xml, I have "required" set for
the depends attribute for every single text field.

            depends="required"

I intentionally left every field in those forms blank
and submit forms.  But, the Struts did not give me any
warning about that I leave text fields blank.


--- Matt Bathje <mp...@ntsource.com> wrote:

> Caroline Jen wrote:
>
> > Do not understand the 'HTTP Status 500 -
> > java.lang.ClassCastException
> >
>
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.jav
a:141)'
> >
> >
> > 1. I have this plug-in by the very end of the
> > struts-config.xml file:
> >
> > <plug-in
> >
>
className="org.apache.struts.validator.ValidatorPlugIn">
> >    <set-property
> >        property="pathnames"
> >
> >
>
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
> > </plug-in>
> >
> > 2. I have this action mapping in the
> struts-config.xml
> > file:
> >
> >     <action
> >         path="/content/UpdateTitle"
> >         type="org.dhsinfo.content.doSomething1"
> >         name="editTitleForm"
> >         scope="request"
> >         validate="true"
> >         input=".frame.content">
> >        <forward
> >            name="success"
> >            path=".title.Confirmation"/>
> >     </action>
> >
> > 3. I have this <form-bean> inside the <form-beans>
> > element in the struts-config.xml file:
> >
> >      <form-bean
> >         name="editTitleForm"
> >
> >
>
type="org.apache.struts.validator.DynaValidatorForm">
> >           <form-property
> >             name="page"
> >             type="java.lang.String"/>
> >           <form-property
> >             name="title"
> >             type="java.lang.String"/>
> >      </form-bean>
> >
> > 4. I have the validation.xml file in the
> > AppName/WEB-INF directory
> >
> > 4.1. I changed the beginning of the validation.xml
> > file to
> >
>
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
> > ):
> >
> > 4.2 my validation.xml file code is shown below
> >
> > I got the HTTP Status 500 -
> > Servlet.service() for servlet action threw
> exception
> >
> > java.lang.ClassCastException
> >
>
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.jav
a:141)
> >
> > code:
> >
> > <?xml version="1.0" encoding="ISO-8859-1" ?>
> >
> > <!DOCTYPE form-validation PUBLIC
> >           "-//Apache Software Foundation//DTD
> Commons
> > Validator Rules Configuration 1.0//EN"
> >
> >
>
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
> > <form-validation>
> >    <global>
> >       <constant>
> >          <constant-name>postalCode</constant-name>
> >
> <constant-value>^\d{5}\d*$</constant-value>
> >       </constant>
> >    </global>
> >
> >   <formset>
> >
> >       <form name="editTitleForm">
> >          <field
> >             property="page"
> >             depends="required">
> >                <arg0 key="request.page"/>
> >          </field>
> >          <field
> >             property="title"
> >             depends="required">
> >                <arg0 key="insert.title"/>
> >          </field>
> >       </form>
> >    </formset>
> > </form-validation>
> >
>
>
> It appears as though the problem is with your use of
> a form-property
> called "page" - based on what I am seeing around
> line 141 of the
> DynaValidatorForm code, if you have a property named
> page, it MUST be an
> integer, otherwise classcastexception is thrown.
>
> I'm guessing this is to accomodate "paged" forms
> (aka wizards)
>
> Try changing the property to have another name, and
> I think it will fix
> your problem.
>
>
> Matt
>
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
>
>




_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: What Are the Causes For Validation to Throw ClassCastException?

Posted by Caroline Jen <ji...@yahoo.com>.
I have changed the property from 'page' to 'pg'.  The
ClassCastException problem is gone.  However, the
validation.xml that I put in the AppName/WEB-INF is
not doing anything.

In my action mapping (struts-config.xml), I did set 

        validate="true"

and in my validation.xml, I have "required" set for
the depends attribute for every single text field.

            depends="required"

I intentionally left every field in those forms blank
and submit forms.  But, the Struts did not give me any
warning about that I leave text fields blank.

 
--- Matt Bathje <mp...@ntsource.com> wrote:

> Caroline Jen wrote:
> 
> > Do not understand the 'HTTP Status 500 -
> > java.lang.ClassCastException 
> >
>
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)'
> > 
> > 
> > 1. I have this plug-in by the very end of the
> > struts-config.xml file:
> > 
> > <plug-in
> >
>
className="org.apache.struts.validator.ValidatorPlugIn">
> >    <set-property
> >        property="pathnames"
> >            
> >
>
value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
> > </plug-in>
> > 
> > 2. I have this action mapping in the
> struts-config.xml
> > file:
> > 
> >     <action
> >         path="/content/UpdateTitle"
> >         type="org.dhsinfo.content.doSomething1"
> >         name="editTitleForm"
> >         scope="request"
> >         validate="true"
> >         input=".frame.content">
> >        <forward
> >            name="success"
> >            path=".title.Confirmation"/>
> >     </action>
> > 
> > 3. I have this <form-bean> inside the <form-beans>
> > element in the struts-config.xml file:
> > 
> >      <form-bean
> >         name="editTitleForm"
> >        
> >
>
type="org.apache.struts.validator.DynaValidatorForm">
> >           <form-property
> >             name="page"
> >             type="java.lang.String"/>
> >           <form-property
> >             name="title"
> >             type="java.lang.String"/>
> >      </form-bean>
> > 
> > 4. I have the validation.xml file in the
> > AppName/WEB-INF directory
> > 
> > 4.1. I changed the beginning of the validation.xml
> > file to
> >
>
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
> > ):
> > 
> > 4.2 my validation.xml file code is shown below
> > 
> > I got the HTTP Status 500 -
> > Servlet.service() for servlet action threw
> exception
> > 
> > java.lang.ClassCastException 
> >
>
org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)
> > 
> > code:
> > 
> > <?xml version="1.0" encoding="ISO-8859-1" ?>
> > 
> > <!DOCTYPE form-validation PUBLIC
> >           "-//Apache Software Foundation//DTD
> Commons
> > Validator Rules Configuration 1.0//EN"
> >          
> >
>
"http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
> > <form-validation>
> >    <global>
> >       <constant>
> >          <constant-name>postalCode</constant-name>
> >         
> <constant-value>^\d{5}\d*$</constant-value>  
> >       </constant>
> >    </global>
> > 
> >   <formset>
> > 
> >       <form name="editTitleForm">
> >          <field
> >             property="page"
> >             depends="required">
> >                <arg0 key="request.page"/>
> >          </field>
> >          <field
> >             property="title"
> >             depends="required">
> >                <arg0 key="insert.title"/>
> >          </field>
> >       </form>
> >    </formset>
> > </form-validation>
> >       
> 
> 
> It appears as though the problem is with your use of
> a form-property 
> called "page" - based on what I am seeing around
> line 141 of the 
> DynaValidatorForm code, if you have a property named
> page, it MUST be an 
> integer, otherwise classcastexception is thrown.
> 
> I'm guessing this is to accomodate "paged" forms
> (aka wizards)
> 
> Try changing the property to have another name, and
> I think it will fix 
> your problem.
> 
> 
> Matt
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> user-unsubscribe@struts.apache.org
> For additional commands, e-mail:
> user-help@struts.apache.org
> 
> 



		
_______________________________
Do you Yahoo!?
Declare Yourself - Register online to vote today!
http://vote.yahoo.com

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org


Re: What Are the Causes For Validation to Throw ClassCastException?

Posted by Matt Bathje <mp...@ntsource.com>.
Caroline Jen wrote:

> Do not understand the 'HTTP Status 500 -
> java.lang.ClassCastException 
> org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)'
> 
> 
> 1. I have this plug-in by the very end of the
> struts-config.xml file:
> 
> <plug-in
> className="org.apache.struts.validator.ValidatorPlugIn">
>    <set-property
>        property="pathnames"
>            
> value="/WEB-INF/validator-rules.xml,/WEB-INF/validation.xml"/>
> </plug-in>
> 
> 2. I have this action mapping in the struts-config.xml
> file:
> 
>     <action
>         path="/content/UpdateTitle"
>         type="org.dhsinfo.content.doSomething1"
>         name="editTitleForm"
>         scope="request"
>         validate="true"
>         input=".frame.content">
>        <forward
>            name="success"
>            path=".title.Confirmation"/>
>     </action>
> 
> 3. I have this <form-bean> inside the <form-beans>
> element in the struts-config.xml file:
> 
>      <form-bean
>         name="editTitleForm"
>        
> type="org.apache.struts.validator.DynaValidatorForm">
>           <form-property
>             name="page"
>             type="java.lang.String"/>
>           <form-property
>             name="title"
>             type="java.lang.String"/>
>      </form-bean>
> 
> 4. I have the validation.xml file in the
> AppName/WEB-INF directory
> 
> 4.1. I changed the beginning of the validation.xml
> file to
> "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd"
> ):
> 
> 4.2 my validation.xml file code is shown below
> 
> I got the HTTP Status 500 -
> Servlet.service() for servlet action threw exception
> 
> java.lang.ClassCastException 
> org.apache.struts.validator.DynaValidatorForm.validate(DynaValidatorForm.java:141)
> 
> code:
> 
> <?xml version="1.0" encoding="ISO-8859-1" ?>
> 
> <!DOCTYPE form-validation PUBLIC
>           "-//Apache Software Foundation//DTD Commons
> Validator Rules Configuration 1.0//EN"
>          
> "http://jakarta.apache.org/commons/dtds/validator_1_1_3.dtd">
> <form-validation>
>    <global>
>       <constant>
>          <constant-name>postalCode</constant-name>
>          <constant-value>^\d{5}\d*$</constant-value>  
>       </constant>
>    </global>
> 
>   <formset>
> 
>       <form name="editTitleForm">
>          <field
>             property="page"
>             depends="required">
>                <arg0 key="request.page"/>
>          </field>
>          <field
>             property="title"
>             depends="required">
>                <arg0 key="insert.title"/>
>          </field>
>       </form>
>    </formset>
> </form-validation>
>       


It appears as though the problem is with your use of a form-property 
called "page" - based on what I am seeing around line 141 of the 
DynaValidatorForm code, if you have a property named page, it MUST be an 
integer, otherwise classcastexception is thrown.

I'm guessing this is to accomodate "paged" forms (aka wizards)

Try changing the property to have another name, and I think it will fix 
your problem.


Matt

---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
For additional commands, e-mail: user-help@struts.apache.org