Flex wants a public constructor with no arguments available, so the 
solution is to just add your second constructor with whatever 
arguments you want while keeping the default constructor.  That 
would make both of the folowing valid:

 TestVO vo = new TestVO();
 TestVO vo = new TestVO(rs.getInt("id"), rs.getString("data"));

It may arguably be bad form to access data members directly, but 
strict adherence to good Java form in value objects just leads to 
problems on the Flex side.  If, for example, you went the full route 
and declared your data members private to force the use of accessor 
methods, your Flex object would contain no properties since Flex 
would have no visibility to the private members.  I usually just let 
it slide, and create a Java "good form" wrapper object if I must for 
accessing on the server side.

Doug

--- In [email protected], "ytseshred" <[EMAIL PROTECTED]> wrote:
>
> That was a typo on my Part.  They are being set using methods:
> 
> TestVO vo = new TestVO();
> vo.setID(rs.getInt("id"));
> vo.setData(rs.getString("data"));
> 
> The problem has been solved by casting the result to 
ArrayCollection
> using the as keyword.
> 
> I'm not sure what was causing my first problem, but I originally 
had
> my VO's defined with constructors, so I could create the VO like:
> 
> TestVO vo = new TestVO(rs.getInt("id"), rs.getString("data"));
> 
> But Flex gave a runtime error when it was constructing the array
> collection saying something like TestVO init expected 2 arguments 
and
> got 0.
> 
> --- In [email protected], "lepusmars" <paul@> wrote:
> >
> > I have to disagree about not throwing the Exception.  If you 
actually
> > handle the exception in the method then you shouldn't throw it, 
but
> > the exception is not being handled. The user needs to know that
> > something went wrong. And the bit about the Higher scope not 
importing
> > the DAOException, that's just plain wrong.  The higher scope 
will see
> > it as an Exception if it doesn't handle the specific Exception. 
Not
> > throwing the exception will simply return an empty list.
> > 
> > The real question is what is the Exception that is being thrown 
in the
> > try block?  That will tell us what the issue is and lead us to 
the
> > conclusion as to how to fix it.  Is there a Stack Trace 
available that
> > I can look at?
> > 
> > Also...
> > > > vo.id = rs.getInt("id");
> > > > vo.data = rs.getString("data");
> > ... this is bad from. You shouldn't be accessing data members
> > directly, they should be encapsulated, and you should access them
> > using accesser methods.
> > 
> > Paul
> > 
> > 
> > --- In [email protected], "André Rodrigues Pena"
> > <andre.ufrj@> wrote:
> > >
> > > Man.. Just remove the throws of your getList() method. Never 
use
> > throws at a
> > > service method. (specially in this example where the throws is 
USELESS
> > > because you are already treating the exception with the try
> clause) The
> > > throws clause passes the exception treatment to a higher 
scope, this
> > scope
> > > may not import de DAOException needed to process it properly. 
Simply
> > never
> > > do this.
> > > 
> > > On 2/12/07, ytseshred <ytseshred@> wrote:
> > > >
> > > >   I'm using RemoteObjects to connect to my backend. In one 
of my
> calls
> > > > I'm trying to return a List of VO's I create after hitting my
> > database.
> > > >
> > > > On the Flex side, my result event is firing properly, but 
when I try
> > > > to convert the result to an ArrayCollection, instead of 
getting a
> > > > proper ArrayCollection I get single element that displays the
> > > > following when I output it in an alert: "obj is: '[object 
TestVO],
> > > > [object TestVO], ... [object TestVO]'".
> > > >
> > > > If I return a single TestVO object directly instead of a 
List, I can
> > > > properly cast the result to my ActionScript TestVO object and
> view the
> > > > data properly. It's just returning the List that's giving me
> problems.
> > > >
> > > > Can anyone offer any suggestions please?
> > > >
> > > > My Flex result code is:
> > > >
> > > > public function result(evt:Object):void {
> > > > if(evt.type && evt.type == ResultEvent.RESULT) {
> > > > var re:ResultEvent = evt as ResultEvent;
> > > > var col:ArrayCollection = new
> > > > ArrayCollection(ArrayUtil.toArray(re.result));
> > > > if(col) {
> > > > Alert.show("obj is: '" + col.getItemAt(0) + "'");
> > > > }
> > > > else Alert.show("Didn't cast properly!");
> > > > }
> > > > }
> > > >
> > > > My Java DAO code that returns the list is:
> > > >
> > > > public List getList() throws DAOException {
> > > > List list = new ArrayList();
> > > > Connection c = null;
> > > >
> > > > try {
> > > > c = ConnectionHelper.getConnection();
> > > > Statement s = c.createStatement();
> > > > ResultSet rs = s.executeQuery("SELECT * FROM test");
> > > > while(rs.next()) {
> > > > TestVO vo = new TestVO();
> > > > vo.id = rs.getInt("id");
> > > > vo.data = rs.getString("data");
> > > > list.add(vo);
> > > > }
> > > > } catch(Exception e) {
> > > > e.printStackTrace();
> > > > throw new DAOException(e);
> > > > } finally {
> > > > ConnectionHelper.close(c);
> > > > }
> > > > return list;
> > > > }
> > > >
> > > >  
> > > >
> > > 
> > > 
> > > 
> > > -- 
> > > André Rodrigues Pena
> > > 
> > > LOCUS
> > > www.locus.com.br
> > > 
> > > Blog
> > > www.techbreak.org
> > >
> >
>


Reply via email to