I think that there are a lot more mistakes in my code
than I originally thought.  The root of the problem is
that I do not know how to use DynaValidatorForm.  If
you could help me in learning how to code when I am
working with DynaValidatorForm.  

1. in my struts-config.xml, I have:

     <form-bean
        name="postForm" 
         
type="org.apache.struts.validator.DynaValidatorForm">
          <form-property
            name="receiver"
            type="java.lang.String"/>
          <form-property
            name="sender"
            type="java.lang.String"/>
          .....
          .....
        </form-bean>

2. My PostForm.java is like:

import org.apache.struts.validator.DynaValidatorForm;
import org.apache.struts.action.ActionMapping;
 
public class PostForm extends DynaValidatorForm  {
 
    private String receiver;
    private String sender;
    ......
    
    public void setReceiver( String receiver )
    {
        this.receiver = receiver;
    }
    public void setSender( String sender ) 
    {
        this.sender = sender;
    }
    public String getReceiver() 
    {
        return receiver;
    }
    public String getSender() 
    {
        return sender;
    }
    .....
    .....
}

3. in my action class (see the code below)

3.1. do I cast the form to DynaActionForm? or I should
cast the form to DynaValidatorForm?

3.2. Can I use the copyProperties() method of the
BeanUtils to convert the form to a bean?

   BeanUtils.copyProperties( threadBean, postForm );

.......
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.DynaActionForm;
import org.apache.commons.beanutils.BeanUtils;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.artimus.message.PostForm;
import org.apache.artimus.message.PostBean;
import org.apache.artimus.message.ThreadBean;
import org.apache.artimus.message.utility.DateUtil;

public final class StoreMessage extends Action
{
   public ActionForward execute(ActionMapping mapping,
                                ActionForm form,
                                HttpServletRequest
request,
                                HttpServletResponse
response)
        throws Exception 
   {

      int parentPostID;
      int threadID;
      String memberName = request.getRemoteUser();
      Timestamp now =
DateUtil.getCurrentGMTTimestamp();
      parentPostID = Integer.parseInt(
request.getParameter( "parent" ) );

      DynaActionForm postForm = ( DynaActionForm
)form;

      ThreadHandler thandler = new ThreadHandler();

      ThreadBean threadBean = new ThreadBean();
      BeanUtils.copyProperties( threadBean, postForm
);

      if (parentPostID == 0 ) // new topic
      {
         threadBean.setLastPostMemberName( memberName
);
         threadBean.setThreadCreationDate( now );
         .........
         .........
 
         threadID = thandler.insertThread( threadBean
);

      }
   .......
   .......
   }
}

4. the action mapping in my struts-config.xml is like:
    <action
        roles="administrator,editor,contributor"
        path="/message/NewTopic"
        type="org.apache.artimus.message.StoreMessage"
        name="postForm"
        scope="request"
        validate="true"
        input=".message.Form">
       <forward
            name="success"
            path=".article.View"/>
    </action>

Thank you.
--- David Friedman <[EMAIL PROTECTED]> wrote:
> Here is what I see (opinions vary)...
> 
> I see you are defining your form bean in your
> struts-config.xml as type
> 'org.apache.struts.validator.DynaValidatorForm'. So,
> why are you trying to
> cast it as this
> 'org.apache.artimus.message.PostForm' class.  Does
> that
> class extend DynaValidatorForm?  If it doesn't,
> you'll get a
> ClassCastException like you're getting now.  
> Personally, I expected you to
> cast it as:
> 
> DynaValidatorForm postForm = (DynaValidatorForm)
> form;
> 
> Or us it as-initially defined (not casting like
> above) and use BeanUtils
> such as:
> String receiver = (String)
> PropertyUtils.getSimpleProperty(form,
> "receiver");
> 
> Regards,
> David
> 
> -----Original Message-----
> From: Caroline Jen [mailto:[EMAIL PROTECTED]
> Sent: Saturday, January 03, 2004 11:04 PM
> To: Struts Users Mailing List
> Subject: Re: Please Help - ClassCastException
> 
> 
> Thank you for trying to help.  I have added
> import org.apache.artimus.message.PostForm;
> to my action class.  I do not fully follow what I
> should check in the struts-config.xml file.  And
> should I use name="postForm" with lowercase 'p' or
> uppercase 'P'?
> 
> In my struts-config.xml file, I have:
> 
>      <form-bean
>         name="postForm"
> 
>
type="org.apache.struts.validator.DynaValidatorForm">
>           <form-property
>             name="receiver"
>             type="java.lang.String"/>
>           <form-property
>             name="sender"
>             type="java.lang.String"/>
>           <form-property
>             name="title"
>             type="java.lang.String"/>
>           <form-property
>             name="postTopic"
>             type="java.lang.String"/>
>           <form-property
>             name="postBody"
>             type="java.lang.String"/>
>         </form-bean>
> 
> and
> 
>     <action
>         roles="administrator,editor,contributor"
>         path="/message/NewTopic"
>        
> type="org.apache.artimus.message.StoreMessage"
>         name="postForm"
>         scope="request"
>         validate="true"
>         input=".message.Form">
>        <forward
>             name="success"
>             path=".article.View"/>
>     </action>
> 
> Do you see any problems?
> --- Pedro Salgado <[EMAIL PROTECTED]> wrote:
> >
> >   On your struts config file check if the form
> bean
> > for StoreMessage action
> > is of type pkg.pkg.PostForm and if the action name
> > is pointing to the
> > correct form bean... It also seems to be missing
> the
> > import of the PostForm
> > on your action class.
> >
> > Pedro Salgado
> >
> > On 04/01/2004 03:22, "Caroline Jen"
> > <[EMAIL PROTECTED]> wrote:
> >
> > > The statement shown below encountered a
> > > ClassCastException:
> > >
> > >     PostForm postForm = ( PostForm )form;
> > >
> > > I cannot figure out the reason.  Please help.
> > >
> > > Allow me to show more code of the class where
> the
> > > exception occurred:
> > >
> > > ...
> > >
> > > import org.apache.struts.action.Action;
> > > import org.apache.struts.action.ActionForward;
> > > import org.apache.struts.action.ActionMapping;
> > > import org.apache.struts.action.ActionForm;
> > > import org.apache.commons.beanutils.BeanUtils;
> > > import javax.servlet.http.HttpServletRequest;
> > > import javax.servlet.http.HttpServletResponse;
> > >
> > > import org.apache.artimus.message.PostBean;
> > > import org.apache.artimus.message.ThreadBean;
> > > import
> > org.apache.artimus.message.utility.DateUtil;
> > >
> > > public final class StoreMessage extends Action
> > > {
> > >  public ActionForward execute(ActionMapping
> > mapping,
> > >                               ActionForm form,
> > >                               HttpServletRequest
> > > request,
> > >                              
> HttpServletResponse
> > > response)
> > >       throws Exception
> > >  {
> > >
> > >     int parentPostID;
> > >     int threadID;
> > >     int postID;
> > >     String postCreationIP;
> > >     String memberName = request.getRemoteUser();
> > >     Timestamp now =
> > > DateUtil.getCurrentGMTTimestamp();
> > >
> > >     parentPostID = Integer.parseInt(
> > > request.getParameter( "parent" ) );
> > >
> > >     PostForm postForm = ( PostForm )form;
> > > ....
> > > ....
> > >
> > >  }
> > > }
> > >
> > > __________________________________
> > > Do you Yahoo!?
> > > Find out what made the Top Yahoo! Searches of
> 2003
> > > http://search.yahoo.com/top2003
> > >
> > >
> >
>
---------------------------------------------------------------------
> > > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> >
> >
> >
>
---------------------------------------------------------------------
> > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> >
> 
> 
> __________________________________
> Do you Yahoo!?
> Find out what made the Top Yahoo! Searches of 2003
> http://search.yahoo.com/top2003
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 
> 
>
---------------------------------------------------------------------
> To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> For additional commands, e-mail:
> [EMAIL PROTECTED]
> 


__________________________________
Do you Yahoo!?
Find out what made the Top Yahoo! Searches of 2003
http://search.yahoo.com/top2003

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

Reply via email to