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]