RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-09 Thread Caroline Jen
Robert,  I followed your advices.  Your code works
very well.  I have successfully inserted all the
values of my bean properties into the database.  Thank
you very much.
--- Robert Taylor [EMAIL PROTECTED] wrote:
 The same problem exists, you are calling getters on
 a ThreadBean instance
 which has not yet been populated.
 
 
 Below three ways to accomplish your goal:
 
 METHOD 1:
 Try this (proxy):
 
 public final class ThreadHandler {
 
 MessageDAO md = new MySQLMessageDAO();
 
 public int insertThread(ThreadBean bean)
 throws throws MessageDAOSysException,
 ObjectNotFoundException {
 
   int identity = 0;
 
   md.createThread(bean.getReceiver(),
   bean.getSender(),
   bean.getThreadTopic(),
   bean.getThreadBody(),
   bean.getThreadCreationDate(),
   bean.getThreadViewCount(),
   bean.getThreadReplyCount());
 
   // get identity
 
   return identity;
 
 }
 
 
 }
 
 ThreadBean bean = new ThreadBean();
 BeanUtils.copyProperties(bean, postForm);
 ThreadHandler th = new ThreadHandler()
 th.insertThread(bean);
 
 If you do it this way, then it would be better if
 ThreadHandler was a
 singleton,
 but that's a different discussion :)
 
 
 
 
 METHOD 2:
 Another way to do it (design by composition).
 
 public final class ThreadHandler {
 
 MessageDAO md = new MySQLMessageDAO();
 ThreadBean bean;
 
 public ThreadHandler(ThreadBean bean) {
 
this.bean = bean;
 
 }
 public int insertThread()
 throws throws MessageDAOSysException,
 ObjectNotFoundException {
 
   int identity = 0;
 
   md.createThread(bean.getReceiver(),
   bean.getSender(),
   bean.getThreadTopic(),
   bean.getThreadBody(),
   bean.getThreadCreationDate(),
   bean.getThreadViewCount(),
   bean.getThreadReplyCount());
 
   // get identity
 
   return identity;
 
 }
 
 
 }
 
 ThreadBean bean = new ThreadBean();
 BeanUtils.copyProperties(bean, postForm);
 ThreadHandler th = new ThreadHandler(bean)
 th.insertThread();
 
 
 METHOD 3:
 Yet another way via classic inheritance:
 
 public final class ThreadHandler
   extends ThreadBean {
 
 MessageDAO md = new MySQLMessageDAO();
 
 
 public ThreadHandler() {
 
   super();
 
 }
 public int insertThread()
 throws throws MessageDAOSysException,
 ObjectNotFoundException {
 
   int identity = 0;
 
   md.createThread(this.getReceiver(),
   this.getSender(),
   this.getThreadTopic(),
   this.getThreadBody(),
   this.getThreadCreationDate(),
   this.getThreadViewCount(),
   this.getThreadReplyCount());
 
   // get identity
 
   return identity;
 
 }
 
 
 }
 
 ThreadHandler th = new ThreadHandler();
 BeanUtils.copyProperties(th, postForm);
 th.insertThread();
 
 
 
 hth,
 
 robert
 
 
  -Original Message-
  From: Caroline Jen [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 08, 2004 11:48 AM
  To: Struts Users Mailing List
  Subject: RE: All The Bean Properties Are Null in
 the Business Tier!!!
  (Used BeanUtils to Convert DynaValidatorForm)
 
 
  Thank you for your comment, which is very helpful.
 
  Instead of extends ThreadBean, I now import the
  ThreadBean into my ThreadHandler class (see the
 code
  below). I am still getting all null or zero values
  from the bean.
 
  What is the proper way to do it?  I simply want to
  insert the value of all the properties into the
  database.  Most of the fields in my database
 require
  NOT NULL.
 
  code:
  ==
  import org.apache.artimus.message.ThreadBean;
 
  class ThreadHandler
  {
 ThreadBean threadBean = new ThreadBean();
 
 String receiver = threadBean.getReceiver();
 String sender = threadBean.getSender();
 String threadTopic = threadBean.getPostTopic();
 String threadBody = threadBean.getPostBody();
 Timestamp threadCreationDate =
  threadBean.getThreadCreationDate();
 int threadViewCount =
  threadBean.getThreadViewCount();
 int threadReplyCount =
  threadBean.getThreadReplyCount();
 
 MessageDAO md = new MySQLMessageDAO();
 public int insertThread( ThreadBean threadBean
 )
  throws
 MessageDAOSysException,
 

 ObjectNotFoundException
 
 {
System.out.println( The sender is  +
 sender +
  . );
System.out.println( The subject is  +
  threadTopic + . );
System.out.println( The creation date is 
 +
  threadCreationDate );
System.out.println( The number of replies
 are 
=== message truncated ===


__
Do you Yahoo!?
Yahoo! Hotjobs: Enter the Signing 

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-09 Thread Robert Taylor
Glad it worked for you.

robert

 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Friday, January 09, 2004 5:12 PM
 To: Struts Users Mailing List
 Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
 (Used BeanUtils to Convert DynaValidatorForm)
 
 
 Robert,  I followed your advices.  Your code works
 very well.  I have successfully inserted all the
 values of my bean properties into the database.  Thank
 you very much.
 --- Robert Taylor [EMAIL PROTECTED] wrote:
  The same problem exists, you are calling getters on
  a ThreadBean instance
  which has not yet been populated.
  
  
  Below three ways to accomplish your goal:
  
  METHOD 1:
  Try this (proxy):
  
  public final class ThreadHandler {
  
  MessageDAO md = new MySQLMessageDAO();
  
  public int insertThread(ThreadBean bean)
  throws throws MessageDAOSysException,
  ObjectNotFoundException {
  
int identity = 0;
  
md.createThread(bean.getReceiver(),
bean.getSender(),
bean.getThreadTopic(),
bean.getThreadBody(),
bean.getThreadCreationDate(),
bean.getThreadViewCount(),
bean.getThreadReplyCount());
  
// get identity
  
return identity;
  
  }
  
  
  }
  
  ThreadBean bean = new ThreadBean();
  BeanUtils.copyProperties(bean, postForm);
  ThreadHandler th = new ThreadHandler()
  th.insertThread(bean);
  
  If you do it this way, then it would be better if
  ThreadHandler was a
  singleton,
  but that's a different discussion :)
  
  
  
  
  METHOD 2:
  Another way to do it (design by composition).
  
  public final class ThreadHandler {
  
  MessageDAO md = new MySQLMessageDAO();
  ThreadBean bean;
  
  public ThreadHandler(ThreadBean bean) {
  
 this.bean = bean;
  
  }
  public int insertThread()
  throws throws MessageDAOSysException,
  ObjectNotFoundException {
  
int identity = 0;
  
md.createThread(bean.getReceiver(),
bean.getSender(),
bean.getThreadTopic(),
bean.getThreadBody(),
bean.getThreadCreationDate(),
bean.getThreadViewCount(),
bean.getThreadReplyCount());
  
// get identity
  
return identity;
  
  }
  
  
  }
  
  ThreadBean bean = new ThreadBean();
  BeanUtils.copyProperties(bean, postForm);
  ThreadHandler th = new ThreadHandler(bean)
  th.insertThread();
  
  
  METHOD 3:
  Yet another way via classic inheritance:
  
  public final class ThreadHandler
  extends ThreadBean {
  
  MessageDAO md = new MySQLMessageDAO();
  
  
  public ThreadHandler() {
  
super();
  
  }
  public int insertThread()
  throws throws MessageDAOSysException,
  ObjectNotFoundException {
  
int identity = 0;
  
md.createThread(this.getReceiver(),
this.getSender(),
this.getThreadTopic(),
this.getThreadBody(),
this.getThreadCreationDate(),
this.getThreadViewCount(),
this.getThreadReplyCount());
  
// get identity
  
return identity;
  
  }
  
  
  }
  
  ThreadHandler th = new ThreadHandler();
  BeanUtils.copyProperties(th, postForm);
  th.insertThread();
  
  
  
  hth,
  
  robert
  
  
   -Original Message-
   From: Caroline Jen [mailto:[EMAIL PROTECTED]
   Sent: Thursday, January 08, 2004 11:48 AM
   To: Struts Users Mailing List
   Subject: RE: All The Bean Properties Are Null in
  the Business Tier!!!
   (Used BeanUtils to Convert DynaValidatorForm)
  
  
   Thank you for your comment, which is very helpful.
  
   Instead of extends ThreadBean, I now import the
   ThreadBean into my ThreadHandler class (see the
  code
   below). I am still getting all null or zero values
   from the bean.
  
   What is the proper way to do it?  I simply want to
   insert the value of all the properties into the
   database.  Most of the fields in my database
  require
   NOT NULL.
  
   code:
   ==
   import org.apache.artimus.message.ThreadBean;
  
   class ThreadHandler
   {
  ThreadBean threadBean = new ThreadBean();
  
  String receiver = threadBean.getReceiver();
  String sender = threadBean.getSender();
  String threadTopic = threadBean.getPostTopic();
  String threadBody = threadBean.getPostBody();
  Timestamp threadCreationDate =
   threadBean.getThreadCreationDate();
  int threadViewCount =
   threadBean.getThreadViewCount();
  int threadReplyCount =
   threadBean.getThreadReplyCount();
  
  MessageDAO md = new MySQLMessageDAO();
  public int insertThread( ThreadBean threadBean
  )

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-08 Thread Robert Taylor
Your code seems a bit confusing based upon what you want to
achieve.

If indeed you want ThreadHandler to inherit from ThreadBean,
you should be able to do something like this:

DynaActionForm postForm = ( DynaActionForm )form;
ThreadHander = new ThreadHandler();
BeanUtils.copyProperties( threadHandler, postForm );

threadHandler.insertThread();


The reason you are getting null and zero values in ThreadHandler
is that you are populating a new instance of ThreadBean  here:

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

... and then you get a new instance of ThreadHandler here:

   ThreadHandler thandler = new ThreadHandler();

At this point, ThreadHandler knows nothing of your populated
instance of ThreadBean. Instead it is getting values from
its own empty ThreadBean parent here:

 class ThreadHandler extends ThreadBean
 {
String receiver = getReceiver();
String sender = getSender();
String threadTopic = getPostTopic();
String threadBody = getPostBody();
Timestamp threadCreationDate =
 getThreadCreationDate();
int threadViewCount = getThreadViewCount();
int threadReplyCount = getThreadReplyCount();

.
.
 }


...unless you do something like the following in
ThreadHandler.insertThread():

public int insertThread(ThreadBean bean) throws SomeException {

  this.receiver = bean.getReceiver();
  this.sender = bean.getSender();
  

  // insert code here



}

which from a design perspective, I'm not sure why you would want to do it
this way.


hth,

robert


 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, January 07, 2004 10:27 PM
 To: Struts Users Mailing List
 Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
 (Used BeanUtils to Convert DynaValidatorForm)


 I have narrowed down the problem.  Something went
 wrong in my business tier class (ThreadHandler.java).
 All the properties in the JavaBean are populated
 properly (I have checked).  The way I coded in the
 ThreadHandler class failed to retrieve the value of
 all the properties in the JavaBean (ThreadBean.java).
 All the values turned out to be null or 0.  Now, what
 is wrong with the code?

 class ThreadHandler extends ThreadBean
 {
String receiver = getReceiver();
String sender = getSender();
String threadTopic = getPostTopic();
String threadBody = getPostBody();
Timestamp threadCreationDate =
 getThreadCreationDate();
int threadViewCount = getThreadViewCount();
int threadReplyCount = getThreadReplyCount();

.
.
 }

 To answer your question:

 1. Have you checked to make sure that the fields you
 expect actually exist in the form before calling
 BeanUtils.copyProperties()?

 Yes, I have printed out the contents of the JSP text
 fields in my action class, which is a servlet.  For
 example: System.out.println( the sender is  +
 postForm.get( sender ) );

 2. If so, have you checked to see if the data was
 copied properly just after BeanUtils.copyProperties()?

 Yes, I have also printed out the value of the bean
 properties.  For example: System.out.println( the
 sender is  + threadBean.getSender() );

 3. BeanUtils.copyProperties() uses reflection to copy
 properties.  Are you using proper JavaBeans naming
 convention?

 Yes, I used a pair of get and set methods for each
 properties in the JavaBean (ThreadBean.java).  And in
 my action class, I could print out the value of those
 properties.

 --- Robert Taylor [EMAIL PROTECTED] wrote:
  Have you checked to make sure that the fields you
  expect
  actually exist in the form before calling
  BeanUtils.populate()?
 
  If so, have you checked to see if the data was
  copied properly
  just after BeanUtils.populate()?
 
  BeanUtils.populate() uses reflection to copy
  properties.
  Are you usingproper JavaBeans naming convention?
 
  Try and isolate exactly where the data is getting
  lost.
 
  I use BeanUtils.populate() all the time with
  DynaForms and
  have no problems. Usually when I do, I find that my
  data member
  names don't correspond.
 
  robert
 
   -Original Message-
   From: Caroline Jen [mailto:[EMAIL PROTECTED]
   Sent: Wednesday, January 07, 2004 1:42 PM
   To: [EMAIL PROTECTED]
   Subject: All The Bean Properties Are Null in the
  Business Tier!!! (Used
   BeanUtils to Convert DynaValidatorForm)
  
  
   Hi, my program compiled OKay.  When I ran the
   application, somehow, the properties of my
   DynaValidatorForm are not passed from the action
  class
   to the business tier and then to the data access
  tier.
Please help me taking a look at what went wrong.
 
  
   It looks that the validation worked fine:
  
   form-bean
   name=postForm
  
  
 
 type=org.apache.struts.validator.DynaValidatorForm
  form-property
   name=receiver
   type=java.lang.String/

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-08 Thread Caroline Jen
Thank you for your comment, which is very helpful.

Instead of extends ThreadBean, I now import the
ThreadBean into my ThreadHandler class (see the code
below). I am still getting all null or zero values
from the bean.

What is the proper way to do it?  I simply want to
insert the value of all the properties into the
database.  Most of the fields in my database require
NOT NULL.  

code:
==
import org.apache.artimus.message.ThreadBean;

class ThreadHandler 
{
   ThreadBean threadBean = new ThreadBean();  

   String receiver = threadBean.getReceiver();
   String sender = threadBean.getSender();
   String threadTopic = threadBean.getPostTopic();
   String threadBody = threadBean.getPostBody();
   Timestamp threadCreationDate =
threadBean.getThreadCreationDate();
   int threadViewCount =
threadBean.getThreadViewCount();
   int threadReplyCount =
threadBean.getThreadReplyCount();

   MessageDAO md = new MySQLMessageDAO();
   public int insertThread( ThreadBean threadBean )
throws MessageDAOSysException,

   ObjectNotFoundException

   {
  System.out.println( The sender is  + sender +
. );  
  System.out.println( The subject is  +
threadTopic + . );
  System.out.println( The creation date is  +
threadCreationDate );
  System.out.println( The number of replies are 
+ threadReplyCount );

  md.createThread( receiver, sender, threadTopic, 
   threadBody, threadCreationDate,

   threadViewCount,   
   threadReplyCount ); 

  int threadID = 0;
  . 
  .
  return threadID;
   }
} 


--- Robert Taylor [EMAIL PROTECTED] wrote:
 Your code seems a bit confusing based upon what you
 want to
 achieve.
 
 If indeed you want ThreadHandler to inherit from
 ThreadBean,
 you should be able to do something like this:
 
 DynaActionForm postForm = ( DynaActionForm )form;
 ThreadHander = new ThreadHandler();
 BeanUtils.copyProperties( threadHandler, postForm );
 
 threadHandler.insertThread();
 
 
 The reason you are getting null and zero values in
 ThreadHandler
 is that you are populating a new instance of
 ThreadBean  here:
 
DynaActionForm postForm = ( DynaActionForm
 )form;
ThreadBean threadBean = new ThreadBean();
BeanUtils.copyProperties( threadBean, postForm
 );
 
 ... and then you get a new instance of ThreadHandler
 here:
 
ThreadHandler thandler = new ThreadHandler();
 
 At this point, ThreadHandler knows nothing of your
 populated
 instance of ThreadBean. Instead it is getting values
 from
 its own empty ThreadBean parent here:
 
  class ThreadHandler extends ThreadBean
  {
 String receiver = getReceiver();
 String sender = getSender();
 String threadTopic = getPostTopic();
 String threadBody = getPostBody();
 Timestamp threadCreationDate =
  getThreadCreationDate();
 int threadViewCount = getThreadViewCount();
 int threadReplyCount = getThreadReplyCount();
 
 .
 .
  }
 
 
 ...unless you do something like the following in
 ThreadHandler.insertThread():
 
 public int insertThread(ThreadBean bean) throws
 SomeException {
 
   this.receiver = bean.getReceiver();
   this.sender = bean.getSender();
   
 
   // insert code here
 
 
 
 }
 
 which from a design perspective, I'm not sure why
 you would want to do it
 this way.
 
 
 hth,
 
 robert
 
 
  -Original Message-
  From: Caroline Jen [mailto:[EMAIL PROTECTED]
  Sent: Wednesday, January 07, 2004 10:27 PM
  To: Struts Users Mailing List
  Subject: RE: All The Bean Properties Are Null in
 the Business Tier!!!
  (Used BeanUtils to Convert DynaValidatorForm)
 
 
  I have narrowed down the problem.  Something went
  wrong in my business tier class
 (ThreadHandler.java).
  All the properties in the JavaBean are populated
  properly (I have checked).  The way I coded in the
  ThreadHandler class failed to retrieve the value
 of
  all the properties in the JavaBean
 (ThreadBean.java).
  All the values turned out to be null or 0.  Now,
 what
  is wrong with the code?
 
  class ThreadHandler extends ThreadBean
  {
 String receiver = getReceiver();
 String sender = getSender();
 String threadTopic = getPostTopic();
 String threadBody = getPostBody();
 Timestamp threadCreationDate =
  getThreadCreationDate();
 int threadViewCount = getThreadViewCount();
 int threadReplyCount = getThreadReplyCount();
 
 .
 .
  }
 
  To answer your question:
 
  1. Have you checked to make sure that the fields
 you
  expect actually exist in the form before calling
  BeanUtils.copyProperties()?
 
  Yes, I have printed out the contents of the JSP
 text
  fields in my action class, which is a servlet. 
 For
  example: System.out.println( the sender is  +
  postForm.get( sender ) );
 
  2. If so, have you checked to see if the data was
  copied properly just after
 

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-08 Thread Robert Taylor
The same problem exists, you are calling getters on a ThreadBean instance
which has not yet been populated.


Below three ways to accomplish your goal:

METHOD 1:
Try this (proxy):

public final class ThreadHandler {

MessageDAO md = new MySQLMessageDAO();

public int insertThread(ThreadBean bean)
throws throws MessageDAOSysException, ObjectNotFoundException {

  int identity = 0;

  md.createThread(bean.getReceiver(),
  bean.getSender(),
  bean.getThreadTopic(),
  bean.getThreadBody(),
  bean.getThreadCreationDate(),
  bean.getThreadViewCount(),
  bean.getThreadReplyCount());

  // get identity

  return identity;

}


}

ThreadBean bean = new ThreadBean();
BeanUtils.copyProperties(bean, postForm);
ThreadHandler th = new ThreadHandler()
th.insertThread(bean);

If you do it this way, then it would be better if ThreadHandler was a
singleton,
but that's a different discussion :)




METHOD 2:
Another way to do it (design by composition).

public final class ThreadHandler {

MessageDAO md = new MySQLMessageDAO();
ThreadBean bean;

public ThreadHandler(ThreadBean bean) {

   this.bean = bean;

}
public int insertThread()
throws throws MessageDAOSysException, ObjectNotFoundException {

  int identity = 0;

  md.createThread(bean.getReceiver(),
  bean.getSender(),
  bean.getThreadTopic(),
  bean.getThreadBody(),
  bean.getThreadCreationDate(),
  bean.getThreadViewCount(),
  bean.getThreadReplyCount());

  // get identity

  return identity;

}


}

ThreadBean bean = new ThreadBean();
BeanUtils.copyProperties(bean, postForm);
ThreadHandler th = new ThreadHandler(bean)
th.insertThread();


METHOD 3:
Yet another way via classic inheritance:

public final class ThreadHandler
extends ThreadBean {

MessageDAO md = new MySQLMessageDAO();


public ThreadHandler() {

  super();

}
public int insertThread()
throws throws MessageDAOSysException, ObjectNotFoundException {

  int identity = 0;

  md.createThread(this.getReceiver(),
  this.getSender(),
  this.getThreadTopic(),
  this.getThreadBody(),
  this.getThreadCreationDate(),
  this.getThreadViewCount(),
  this.getThreadReplyCount());

  // get identity

  return identity;

}


}

ThreadHandler th = new ThreadHandler();
BeanUtils.copyProperties(th, postForm);
th.insertThread();



hth,

robert


 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Thursday, January 08, 2004 11:48 AM
 To: Struts Users Mailing List
 Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
 (Used BeanUtils to Convert DynaValidatorForm)


 Thank you for your comment, which is very helpful.

 Instead of extends ThreadBean, I now import the
 ThreadBean into my ThreadHandler class (see the code
 below). I am still getting all null or zero values
 from the bean.

 What is the proper way to do it?  I simply want to
 insert the value of all the properties into the
 database.  Most of the fields in my database require
 NOT NULL.

 code:
 ==
 import org.apache.artimus.message.ThreadBean;

 class ThreadHandler
 {
ThreadBean threadBean = new ThreadBean();

String receiver = threadBean.getReceiver();
String sender = threadBean.getSender();
String threadTopic = threadBean.getPostTopic();
String threadBody = threadBean.getPostBody();
Timestamp threadCreationDate =
 threadBean.getThreadCreationDate();
int threadViewCount =
 threadBean.getThreadViewCount();
int threadReplyCount =
 threadBean.getThreadReplyCount();

MessageDAO md = new MySQLMessageDAO();
public int insertThread( ThreadBean threadBean )
 throws MessageDAOSysException,

ObjectNotFoundException

{
   System.out.println( The sender is  + sender +
 . );
   System.out.println( The subject is  +
 threadTopic + . );
   System.out.println( The creation date is  +
 threadCreationDate );
   System.out.println( The number of replies are 
 + threadReplyCount );

   md.createThread( receiver, sender, threadTopic,
threadBody, threadCreationDate,

threadViewCount,
threadReplyCount );

   int threadID = 0;
   .
   .
   return threadID;
}
 }


 --- Robert Taylor [EMAIL PROTECTED] wrote:
  Your code seems a bit confusing based upon what you
  want to
  achieve.
 
  If indeed you want ThreadHandler to inherit from
  ThreadBean,
  you should be able to do 

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-08 Thread Robert Taylor
I don't think ThreadHandler represents a java.lang.Thread handler.
I think it more or less is a business object to facilitate persistance.
I think the use of the word Thread here is more representative of a
forum discussion thread.

I could be wrong though.

robert


 -Original Message-
 From: Yee, Richard K,,DMDCWEST [mailto:[EMAIL PROTECTED]
 Sent: Thursday, January 08, 2004 12:00 PM
 To: 'Struts Users Mailing List'
 Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
 (Used BeanUtils to Convert DynaValidatorForm)


 Caroline,
 May I ask why you are performing your database updates through a separate
 thread? It seems to be complicating your code. Creating lots of
 threads from
 within your web application is not a good practice if you want your app to
 scale well. Also, what happens if the update doesn't succeed? You have no
 way of notifying the user.

 The code:
 snip
ThreadBean threadBean = new ThreadBean();

String receiver = threadBean.getReceiver();
String sender = threadBean.getSender();
 /snip

 is your problem unless your ThreadBean constructor can populate itself
 correctly with the desired values.
 If you must use threads, then you should be able to create a
 ThreadHandler,
 call a setter method on it and set you ThreadBean instance variable, and
 then call the run method on the ThreadHandler to start the thread.

 Regards,

 Richard

 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Thursday, January 08, 2004 8:48 AM
 To: Struts Users Mailing List
 Subject: RE: All The Bean Properties Are Null in the Business
 Tier!!! (Used
 BeanUtils to Convert DynaValidatorForm)


 Thank you for your comment, which is very helpful.

 Instead of extends ThreadBean, I now import the
 ThreadBean into my ThreadHandler class (see the code
 below). I am still getting all null or zero values
 from the bean.

 What is the proper way to do it?  I simply want to
 insert the value of all the properties into the
 database.  Most of the fields in my database require
 NOT NULL.

 code:
 ==
 import org.apache.artimus.message.ThreadBean;

 class ThreadHandler
 {
ThreadBean threadBean = new ThreadBean();

String receiver = threadBean.getReceiver();
String sender = threadBean.getSender();
String threadTopic = threadBean.getPostTopic();
String threadBody = threadBean.getPostBody();
Timestamp threadCreationDate = threadBean.getThreadCreationDate();
int threadViewCount =
 threadBean.getThreadViewCount();
int threadReplyCount =
 threadBean.getThreadReplyCount();

MessageDAO md = new MySQLMessageDAO();
public int insertThread( ThreadBean threadBean )
 throws MessageDAOSysException,

ObjectNotFoundException

{
   System.out.println( The sender is  + sender +
 . );
   System.out.println( The subject is  +
 threadTopic + . );
   System.out.println( The creation date is  + threadCreationDate );
   System.out.println( The number of replies are 
 + threadReplyCount );

   md.createThread( receiver, sender, threadTopic,
threadBody, threadCreationDate,

threadViewCount,
threadReplyCount );

   int threadID = 0;
   .
   .
   return threadID;
}
 }


 --- Robert Taylor [EMAIL PROTECTED] wrote:
  Your code seems a bit confusing based upon what you
  want to
  achieve.
 
  If indeed you want ThreadHandler to inherit from
  ThreadBean,
  you should be able to do something like this:
 
  DynaActionForm postForm = ( DynaActionForm )form; ThreadHander = new
  ThreadHandler(); BeanUtils.copyProperties( threadHandler, postForm );
 
  threadHandler.insertThread();
 
 
  The reason you are getting null and zero values in ThreadHandler
  is that you are populating a new instance of
  ThreadBean  here:
 
 DynaActionForm postForm = ( DynaActionForm
  )form;
 ThreadBean threadBean = new ThreadBean();
 BeanUtils.copyProperties( threadBean, postForm
  );
 
  ... and then you get a new instance of ThreadHandler
  here:
 
 ThreadHandler thandler = new ThreadHandler();
 
  At this point, ThreadHandler knows nothing of your
  populated
  instance of ThreadBean. Instead it is getting values
  from
  its own empty ThreadBean parent here:
 
   class ThreadHandler extends ThreadBean
   {
  String receiver = getReceiver();
  String sender = getSender();
  String threadTopic = getPostTopic();
  String threadBody = getPostBody();
  Timestamp threadCreationDate =
   getThreadCreationDate();
  int threadViewCount = getThreadViewCount();
  int threadReplyCount = getThreadReplyCount();
  
  .
  .
   }
 
 
  ...unless you do something like the following in
  ThreadHandler.insertThread():
 
  public int insertThread(ThreadBean bean) throws
  SomeException {
 
this.receiver 

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-08 Thread Caroline Jen
Robert, you are absolutely right.  I am trying to
build a personal message inbox using Struts.  I use
the word Thread to represent a discussion topic.  My
ThreadHandler is a business tier class.  The word
Thread has nothing to do with the java.lang.Thread.

-Caroline
--- Robert Taylor [EMAIL PROTECTED] wrote:
 I don't think ThreadHandler represents a
 java.lang.Thread handler.
 I think it more or less is a business object to
 facilitate persistance.
 I think the use of the word Thread here is more
 representative of a
 forum discussion thread.
 
 I could be wrong though.
 
 robert
 
 
  -Original Message-
  From: Yee, Richard K,,DMDCWEST
 [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 08, 2004 12:00 PM
  To: 'Struts Users Mailing List'
  Subject: RE: All The Bean Properties Are Null in
 the Business Tier!!!
  (Used BeanUtils to Convert DynaValidatorForm)
 
 
  Caroline,
  May I ask why you are performing your database
 updates through a separate
  thread? It seems to be complicating your code.
 Creating lots of
  threads from
  within your web application is not a good practice
 if you want your app to
  scale well. Also, what happens if the update
 doesn't succeed? You have no
  way of notifying the user.
 
  The code:
  snip
 ThreadBean threadBean = new ThreadBean();
 
 String receiver = threadBean.getReceiver();
 String sender = threadBean.getSender();
  /snip
 
  is your problem unless your ThreadBean constructor
 can populate itself
  correctly with the desired values.
  If you must use threads, then you should be able
 to create a
  ThreadHandler,
  call a setter method on it and set you ThreadBean
 instance variable, and
  then call the run method on the ThreadHandler to
 start the thread.
 
  Regards,
 
  Richard
 
  -Original Message-
  From: Caroline Jen [mailto:[EMAIL PROTECTED]
  Sent: Thursday, January 08, 2004 8:48 AM
  To: Struts Users Mailing List
  Subject: RE: All The Bean Properties Are Null in
 the Business
  Tier!!! (Used
  BeanUtils to Convert DynaValidatorForm)
 
 
  Thank you for your comment, which is very helpful.
 
  Instead of extends ThreadBean, I now import the
  ThreadBean into my ThreadHandler class (see the
 code
  below). I am still getting all null or zero values
  from the bean.
 
  What is the proper way to do it?  I simply want to
  insert the value of all the properties into the
  database.  Most of the fields in my database
 require
  NOT NULL.
 
  code:
  ==
  import org.apache.artimus.message.ThreadBean;
 
  class ThreadHandler
  {
 ThreadBean threadBean = new ThreadBean();
 
 String receiver = threadBean.getReceiver();
 String sender = threadBean.getSender();
 String threadTopic = threadBean.getPostTopic();
 String threadBody = threadBean.getPostBody();
 Timestamp threadCreationDate =
 threadBean.getThreadCreationDate();
 int threadViewCount =
  threadBean.getThreadViewCount();
 int threadReplyCount =
  threadBean.getThreadReplyCount();
 
 MessageDAO md = new MySQLMessageDAO();
 public int insertThread( ThreadBean threadBean
 )
  throws
 MessageDAOSysException,
 

 ObjectNotFoundException
 
 {
System.out.println( The sender is  +
 sender +
  . );
System.out.println( The subject is  +
  threadTopic + . );
System.out.println( The creation date is 
 + threadCreationDate );
System.out.println( The number of replies
 are 
  + threadReplyCount );
 
md.createThread( receiver, sender,
 threadTopic,
 threadBody,
 threadCreationDate,
 
 threadViewCount,
 threadReplyCount );
 
int threadID = 0;
.
.
return threadID;
 }
  }
 
 
  --- Robert Taylor [EMAIL PROTECTED] wrote:
   Your code seems a bit confusing based upon what
 you
   want to
   achieve.
  
   If indeed you want ThreadHandler to inherit from
   ThreadBean,
   you should be able to do something like this:
  
   DynaActionForm postForm = ( DynaActionForm
 )form; ThreadHander = new
   ThreadHandler(); BeanUtils.copyProperties(
 threadHandler, postForm );
  
   threadHandler.insertThread();
  
  
   The reason you are getting null and zero values
 in ThreadHandler
   is that you are populating a new instance of
   ThreadBean  here:
  
  DynaActionForm postForm = ( DynaActionForm
   )form;
  ThreadBean threadBean = new ThreadBean();
  BeanUtils.copyProperties( threadBean,
 postForm
   );
  
   ... and then you get a new instance of
 ThreadHandler
   here:
  
  ThreadHandler thandler = new
 ThreadHandler();
  
   At this point, ThreadHandler knows nothing of
 your
   populated
   instance of ThreadBean. Instead it is getting
 values
   from
   its own empty ThreadBean parent here:
  
class ThreadHandler extends ThreadBean
{
   String receiver = getReceiver();
   

RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-07 Thread Robert Taylor
Have you checked to make sure that the fields you expect
actually exist in the form before calling BeanUtils.populate()?

If so, have you checked to see if the data was copied properly 
just after BeanUtils.populate()?

BeanUtils.populate() uses reflection to copy properties.
Are you usingproper JavaBeans naming convention?

Try and isolate exactly where the data is getting lost.

I use BeanUtils.populate() all the time with DynaForms and
have no problems. Usually when I do, I find that my data member
names don't correspond.

robert

 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, January 07, 2004 1:42 PM
 To: [EMAIL PROTECTED]
 Subject: All The Bean Properties Are Null in the Business Tier!!! (Used
 BeanUtils to Convert DynaValidatorForm)
 
 
 Hi, my program compiled OKay.  When I ran the
 application, somehow, the properties of my
 DynaValidatorForm are not passed from the action class
 to the business tier and then to the data access tier.
  Please help me taking a look at what went wrong.   
 
 It looks that the validation worked fine: 
 
 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
 because when I intentionally left several of the text
 fields blank and submitted my JSP form, an applet got
 prompted showing something in those fields are
 required.
 
 In my action class (see below),  I used BeanUtils to
 copy all the properties of the DynaValidatorForm to a
 bean (ThreadBean): 
 
 DynaActionForm postForm = ( DynaActionForm )form;
 ThreadBean threadBean = new ThreadBean();
 BeanUtils.copyProperties( threadBean, postForm );
 
 I then added a number of properties with pre-defined
 values to the ThreadBean in the Action class:
 
 Timestamp now = DateUtil.getCurrentGMTTimestamp();
 threadBean.setThreadCreationDate( now );
 threadBean.setThreadViewCount( 0 );
 
 I then called a method in a service class
 ThreadHandler and passing threadBean as the parameter
 of that method:
 
 ThreadHandler thandler = new ThreadHandler();
 threadID = thandler.insertThread( threadBean );
 
 In the ThreadHandler class (see below), I first tried
 to retrieve the values of those properties from the
 ThreadBean.  I FOUND OUT ALL THOSE VALUES ARE NULL!
 
 class ThreadHandler extends ThreadBean 
 {
int threadID = getThreadID();
String receiver = getReceiver();
String sender = getSender();
Timestamp threadCreationDate =
 getThreadCreationDate();
int threadViewCount = getThreadViewCount();
 
public ThreadHandler() {}
 
MessageDAO md = new MySQLMessageDAO();
 
public int insertThread( ThreadBean threadBean )
 throws
 MessageDAOSysException, ObjectNotFoundException
{
   md.createThread( receiver, sender,   
threadCreationDate, threadViewCount
 );
 
   .
   .
 
   return threadID;
}
 }
 
 
 
 
 
 __
 Do you Yahoo!?
 Yahoo! Hotjobs: Enter the Signing Bonus Sweepstakes
 http://hotjobs.sweepstakes.yahoo.com/signingbonus
 
 -
 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]



RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-07 Thread Caroline Jen
What does BeanUtils.populate(); do?  I used
BeanUtils.copyProperties();
Does it make any difference?

--- Robert Taylor [EMAIL PROTECTED] wrote:
 Have you checked to make sure that the fields you
 expect
 actually exist in the form before calling
 BeanUtils.populate()?
 
 If so, have you checked to see if the data was
 copied properly 
 just after BeanUtils.populate()?
 
 BeanUtils.populate() uses reflection to copy
 properties.
 Are you usingproper JavaBeans naming convention?
 
 Try and isolate exactly where the data is getting
 lost.
 
 I use BeanUtils.populate() all the time with
 DynaForms and
 have no problems. Usually when I do, I find that my
 data member
 names don't correspond.
 
 robert
 
  -Original Message-
  From: Caroline Jen [mailto:[EMAIL PROTECTED]
  Sent: Wednesday, January 07, 2004 1:42 PM
  To: [EMAIL PROTECTED]
  Subject: All The Bean Properties Are Null in the
 Business Tier!!! (Used
  BeanUtils to Convert DynaValidatorForm)
  
  
  Hi, my program compiled OKay.  When I ran the
  application, somehow, the properties of my
  DynaValidatorForm are not passed from the action
 class
  to the business tier and then to the data access
 tier.
   Please help me taking a look at what went wrong. 
  
  
  It looks that the validation worked fine: 
  
  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
  because when I intentionally left several of the
 text
  fields blank and submitted my JSP form, an applet
 got
  prompted showing something in those fields are
  required.
  
  In my action class (see below),  I used BeanUtils
 to
  copy all the properties of the DynaValidatorForm
 to a
  bean (ThreadBean): 
  
  DynaActionForm postForm = ( DynaActionForm )form;
  ThreadBean threadBean = new ThreadBean();
  BeanUtils.copyProperties( threadBean, postForm );
  
  I then added a number of properties with
 pre-defined
  values to the ThreadBean in the Action class:
  
  Timestamp now = DateUtil.getCurrentGMTTimestamp();
  threadBean.setThreadCreationDate( now );
  threadBean.setThreadViewCount( 0 );
  
  I then called a method in a service class
  ThreadHandler and passing threadBean as the
 parameter
  of that method:
  
  ThreadHandler thandler = new ThreadHandler();
  threadID = thandler.insertThread( threadBean );
  
  In the ThreadHandler class (see below), I first
 tried
  to retrieve the values of those properties from
 the
  ThreadBean.  I FOUND OUT ALL THOSE VALUES ARE
 NULL!
  
  class ThreadHandler extends ThreadBean 
  {
 int threadID = getThreadID();
 String receiver = getReceiver();
 String sender = getSender();
 Timestamp threadCreationDate =
  getThreadCreationDate();
 int threadViewCount = getThreadViewCount();
  
 public ThreadHandler() {}
  
 MessageDAO md = new MySQLMessageDAO();
  
 public int insertThread( ThreadBean threadBean
 )
  throws
  MessageDAOSysException, ObjectNotFoundException
 {
md.createThread( receiver, sender,   
 threadCreationDate,
 threadViewCount
  );
  
.
.
  
return threadID;
 }
  }
  
  
  
  
  
  __
  Do you Yahoo!?
  Yahoo! Hotjobs: Enter the Signing Bonus
 Sweepstakes
  http://hotjobs.sweepstakes.yahoo.com/signingbonus
  
 

-
  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!?
Yahoo! Hotjobs: Enter the Signing Bonus Sweepstakes
http://hotjobs.sweepstakes.yahoo.com/signingbonus

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



RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-07 Thread Robert Taylor
Sorry, I mean copyProperties().

You can find the differences defined below:

http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils
/BeanUtils.html#copyProperties(java.lang.Object, java.lang.Object)

http://jakarta.apache.org/commons/beanutils/api/org/apache/commons/beanutils
/BeanUtils.html#populate(java.lang.Object, java.util.Map)


robert

 -Original Message-
 From: Caroline Jen [mailto:[EMAIL PROTECTED]
 Sent: Wednesday, January 07, 2004 2:13 PM
 To: Struts Users Mailing List
 Subject: RE: All The Bean Properties Are Null in the Business Tier!!!
 (Used BeanUtils to Convert DynaValidatorForm)


 What does BeanUtils.populate(); do?  I used
 BeanUtils.copyProperties();
 Does it make any difference?

 --- Robert Taylor [EMAIL PROTECTED] wrote:
  Have you checked to make sure that the fields you
  expect
  actually exist in the form before calling
  BeanUtils.populate()?
 
  If so, have you checked to see if the data was
  copied properly
  just after BeanUtils.populate()?
 
  BeanUtils.populate() uses reflection to copy
  properties.
  Are you usingproper JavaBeans naming convention?
 
  Try and isolate exactly where the data is getting
  lost.
 
  I use BeanUtils.populate() all the time with
  DynaForms and
  have no problems. Usually when I do, I find that my
  data member
  names don't correspond.
 
  robert
 
   -Original Message-
   From: Caroline Jen [mailto:[EMAIL PROTECTED]
   Sent: Wednesday, January 07, 2004 1:42 PM
   To: [EMAIL PROTECTED]
   Subject: All The Bean Properties Are Null in the
  Business Tier!!! (Used
   BeanUtils to Convert DynaValidatorForm)
  
  
   Hi, my program compiled OKay.  When I ran the
   application, somehow, the properties of my
   DynaValidatorForm are not passed from the action
  class
   to the business tier and then to the data access
  tier.
Please help me taking a look at what went wrong.
 
  
   It looks that the validation worked fine:
  
   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
   because when I intentionally left several of the
  text
   fields blank and submitted my JSP form, an applet
  got
   prompted showing something in those fields are
   required.
  
   In my action class (see below),  I used BeanUtils
  to
   copy all the properties of the DynaValidatorForm
  to a
   bean (ThreadBean):
  
   DynaActionForm postForm = ( DynaActionForm )form;
   ThreadBean threadBean = new ThreadBean();
   BeanUtils.copyProperties( threadBean, postForm );
  
   I then added a number of properties with
  pre-defined
   values to the ThreadBean in the Action class:
  
   Timestamp now = DateUtil.getCurrentGMTTimestamp();
   threadBean.setThreadCreationDate( now );
   threadBean.setThreadViewCount( 0 );
  
   I then called a method in a service class
   ThreadHandler and passing threadBean as the
  parameter
   of that method:
  
   ThreadHandler thandler = new ThreadHandler();
   threadID = thandler.insertThread( threadBean );
  
   In the ThreadHandler class (see below), I first
  tried
   to retrieve the values of those properties from
  the
   ThreadBean.  I FOUND OUT ALL THOSE VALUES ARE
  NULL!
  
   class ThreadHandler extends ThreadBean
   {
  int threadID = getThreadID();
  String receiver = getReceiver();
  String sender = getSender();
  Timestamp threadCreationDate =
   getThreadCreationDate();
  int threadViewCount = getThreadViewCount();
  
  public ThreadHandler() {}
  
  MessageDAO md = new MySQLMessageDAO();
  
  public int insertThread( ThreadBean threadBean
  )
   throws
   MessageDAOSysException, ObjectNotFoundException
  {
 md.createThread( receiver, sender,
  threadCreationDate,
  threadViewCount
   );
  
 .
 .
  
 return threadID;
  }
   }
  
  
  
  
  
   __
   Do you Yahoo!?
   Yahoo! Hotjobs: Enter the Signing Bonus
  Sweepstakes
   http://hotjobs.sweepstakes.yahoo.com/signingbonus
  
  
 
 -
   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!?
 Yahoo! Hotjobs: Enter the Signing Bonus Sweepstakes
 http://hotjobs.sweepstakes.yahoo.com/signingbonus

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




RE: All The Bean Properties Are Null in the Business Tier!!! (Used BeanUtils to Convert DynaValidatorForm)

2004-01-07 Thread Caroline Jen
I have narrowed down the problem.  Something went
wrong in my business tier class (ThreadHandler.java). 
All the properties in the JavaBean are populated
properly (I have checked).  The way I coded in the
ThreadHandler class failed to retrieve the value of
all the properties in the JavaBean (ThreadBean.java). 
All the values turned out to be null or 0.  Now, what
is wrong with the code?

class ThreadHandler extends ThreadBean 
{
   String receiver = getReceiver();
   String sender = getSender();
   String threadTopic = getPostTopic();
   String threadBody = getPostBody();
   Timestamp threadCreationDate =
getThreadCreationDate();
   int threadViewCount = getThreadViewCount();
   int threadReplyCount = getThreadReplyCount();
 
   .
   .
}

To answer your question:

1. Have you checked to make sure that the fields you
expect actually exist in the form before calling
BeanUtils.copyProperties()?

Yes, I have printed out the contents of the JSP text
fields in my action class, which is a servlet.  For
example: System.out.println( the sender is  +
postForm.get( sender ) );

2. If so, have you checked to see if the data was
copied properly just after BeanUtils.copyProperties()?

Yes, I have also printed out the value of the bean
properties.  For example: System.out.println( the
sender is  + threadBean.getSender() );

3. BeanUtils.copyProperties() uses reflection to copy
properties.  Are you using proper JavaBeans naming
convention?

Yes, I used a pair of get and set methods for each
properties in the JavaBean (ThreadBean.java).  And in
my action class, I could print out the value of those
properties.

--- Robert Taylor [EMAIL PROTECTED] wrote:
 Have you checked to make sure that the fields you
 expect
 actually exist in the form before calling
 BeanUtils.populate()?
 
 If so, have you checked to see if the data was
 copied properly 
 just after BeanUtils.populate()?
 
 BeanUtils.populate() uses reflection to copy
 properties.
 Are you usingproper JavaBeans naming convention?
 
 Try and isolate exactly where the data is getting
 lost.
 
 I use BeanUtils.populate() all the time with
 DynaForms and
 have no problems. Usually when I do, I find that my
 data member
 names don't correspond.
 
 robert
 
  -Original Message-
  From: Caroline Jen [mailto:[EMAIL PROTECTED]
  Sent: Wednesday, January 07, 2004 1:42 PM
  To: [EMAIL PROTECTED]
  Subject: All The Bean Properties Are Null in the
 Business Tier!!! (Used
  BeanUtils to Convert DynaValidatorForm)
  
  
  Hi, my program compiled OKay.  When I ran the
  application, somehow, the properties of my
  DynaValidatorForm are not passed from the action
 class
  to the business tier and then to the data access
 tier.
   Please help me taking a look at what went wrong. 
  
  
  It looks that the validation worked fine: 
  
  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
  because when I intentionally left several of the
 text
  fields blank and submitted my JSP form, an applet
 got
  prompted showing something in those fields are
  required.
  
  In my action class (see below),  I used BeanUtils
 to
  copy all the properties of the DynaValidatorForm
 to a
  bean (ThreadBean): 
  
  DynaActionForm postForm = ( DynaActionForm )form;
  ThreadBean threadBean = new ThreadBean();
  BeanUtils.copyProperties( threadBean, postForm );
  
  I then added a number of properties with
 pre-defined
  values to the ThreadBean in the Action class:
  
  Timestamp now = DateUtil.getCurrentGMTTimestamp();
  threadBean.setThreadCreationDate( now );
  threadBean.setThreadViewCount( 0 );
  
  I then called a method in a service class
  ThreadHandler and passing threadBean as the
 parameter
  of that method:
  
  ThreadHandler thandler = new ThreadHandler();
  threadID = thandler.insertThread( threadBean );
  
  In the ThreadHandler class (see below), I first
 tried
  to retrieve the values of those properties from
 the
  ThreadBean.  I FOUND OUT ALL THOSE VALUES ARE
 NULL!
  
  class ThreadHandler extends ThreadBean 
  {
 int threadID = getThreadID();
 String receiver = getReceiver();
 String sender = getSender();
 Timestamp threadCreationDate =
  getThreadCreationDate();
 int threadViewCount = getThreadViewCount();
  
 public ThreadHandler() {}
  
 MessageDAO md = new MySQLMessageDAO();
  
 public int insertThread( ThreadBean threadBean
 )
  throws
  MessageDAOSysException, ObjectNotFoundException
 {
md.createThread( receiver, sender,   
 threadCreationDate,
 threadViewCount
  );
  
.
.
  
return threadID;
 }
  }
  
  
  
  
  
  __
  Do you Yahoo!?
  Yahoo!