Re: JSTL confused by overloading accessor methods

2003-01-09 Thread Travis McCauley
 three things must be true:

 - A getXxx() method or setXxx() method must exist.

 - If they both exist, the return type of getXxx() must match the
   type of the formal parameter in setXxx().  That is, in

 - No more than one setXxx() method may exist.


Thanks very much for that helpful information.  But concerning the 
third point, is it ok to have multiple parameters in additional 
setXxx() methods? Because that was working.

Travis

--
To unsubscribe, e-mail:   
For additional commands, e-mail: 



Re: JSTL confused by overloading accessor methods

2003-01-09 Thread Shawn Bayern
On Thu, 9 Jan 2003, Travis McCauley wrote:

> I've just spent about eight hours trying to figure out a bug in my 
> web-app and it seems to have been caused by overloading a set method. 

This is by design -- or at least the expected behavior.  The JavaBeans
introspector ignores overloaded methods when looking for properties.  For
a JavaBean property 'xxx' to exist (in the default case without BeanInfo
classes), three things must be true:

 - A getXxx() method or setXxx() method must exist.

 - If they both exist, the return type of getXxx() must match the
   type of the formal parameter in setXxx().  That is, in

 TYPE getXxx()

   and

 void setXxx(TYPE x)

   'TYPE' must be the same.

 - No more than one setXxx() method may exist.

-- 
Shawn Bayern
"JSTL in Action"   http://www.manning.com/bayern


--
To unsubscribe, e-mail:   
For additional commands, e-mail: 




JSTL confused by overloading accessor methods

2003-01-09 Thread Travis McCauley
Hello,

I've just spent about eight hours trying to figure out a bug in my 
web-app and it seems to have been caused by overloading a set method. 
This occurred after I all at once added a new attribute and three 
accessor methods to one of my java classes. When I referred to the 
attributes in  tags I got errors that the value 
'attributeName' was not found in an object of class It's the same 
error you get from referring to an attribute that actually doesn't 
exist.

The class I added these new attributes to is an abstract superclass 
for all the java beans in my app. Here's what I added:

private Vector analyticalNotes = null;

public void setAnalyticalNotes(Vector analyticalNotes)
{ this.analyticalNotes = analyticalNotes; }

public Vector getAnalyticalNotes()
{ return analyticalNotes; }

public void setAnalyticalNotes( String sql  )
{ do some jdbc stuff then setAnalyticalNotes with a new Vector }


Here is the JSTL code that was causing the error. The object was in 
the request and I was able to access the analyticalNotes attribute 
through jsp scripting.

 


I had to change the number of parameters in the signature of the 
overloading method to stop the error. So here's what I now have and 
everything is working now:

public void setAnalyticalNotes( String sql, Object 
nullObjectNeverUsedInMethod )


I tried actually changing String to many other things but in the end 
I had to add a new parameter. I can get by without a solution for 
this but it seems a little weird.

I'm running Tomcat 4.1.12 on Java 1.3 on Mac OS X. I get the same 
error with the JSTL 1.0.2 release AND with the nightly build. Any 
ideas what's up with this?

Sincerely,

Travis McCauley
Tibetan and Himalayan Digital Library
University of Virginia


--
To unsubscribe, e-mail:   
For additional commands, e-mail: