Return-Path: Mailing-List: contact tomcat-dev-help@jakarta.apache.org; run by ezmlm Delivered-To: mailing list tomcat-dev@jakarta.apache.org Received: (qmail 2420 invoked from network); 7 Feb 2001 05:42:43 -0000 Received: from airflash.airflash.com (HELO mail.internal.airflash.com) (64.210.179.4) by h31.sny.collab.net with SMTP; 7 Feb 2001 05:42:43 -0000 Received: from airflash.com ([10.1.10.195]) by mail.internal.airflash.com (Netscape Messaging Server 4.15) with ESMTP id G8DH6Q00.491; Tue, 6 Feb 2001 21:42:26 -0800 Message-ID: <3A80E040.2C42CDB7@airflash.com> Date: Tue, 06 Feb 2001 21:42:24 -0800 From: "Alex Tang" X-Mailer: Mozilla 4.75 [en] (Windows NT 5.0; U) X-Accept-Language: en MIME-Version: 1.0 To: taglibs-user@jakarta.apache.org CC: tomcat-dev@jakarta.apache.org Subject: Re: Is it legal to have multiple taglib setter methods for the same property References: <3A80D6F8.FE9FE5B3@airflash.com> <3A80DD42.91FBCC00@eng.sun.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Rating: h31.sny.collab.net 1.6.2 0/1000/N Thanks for the quick reply Craig. A followup question. In tomcat 3.1, I was able to do public setIndex ( Object o ) If this is legal, I can do my own internal checking to see if the object "o" is a String or an int. However in Tomcat 4.0, I get an error when I try to do this. I saw some talk about this on the tomcat archives, however it wasn't clear whether this is an error on my side or an error in tomcat. Thanks again. ...alex... "Craig R. McClanahan" wrote: > IIRC, having two setters with different argument types violates the JavaBeans > specification. In addition, it seems to cause the Java reflection APIs to think that there > is no setter method at all, so you will get complaints about a read-only property from any > JSP implementation that uses this technique. > > Craig McClanahan > > Alex Tang wrote: > > > Hi folks. (My apologies for crossposting, I wasn't sure if this is a > > taglib question or a tomcat question/problem) > > > > I'm writing a taglib using the JSP 1.1 spec (currently Tomcat 3.x). I'm > > having a problem with a property "set" method. > > > > I have a taglib tag which takes one parameter: "index". This index can > > be either the string "all" or a number representing which CLE object to > > show. > > > > I have the following defined in my tld file: > > > > > > displayCLE > > com.funkware.DisplayCLETag > > com.funkware.DisplayCLEExtraInfo > > Display a CLE > > > > index > > true > > true > > > > > > > > In my "DisplayCLETag.java" file, I have the following: > > > > /** > > * > > * > > * Called when the taglib encounters an int for the index field... > > * This form takes an int which happens when a jsp expression is > > * evaluated on the right side of the "index=". > > * > > * @param nIndex > > * The index > > */ > > public void setIndex ( int nIndex ) { > > m_nIndex = nIndex; > > } > > > > /** > > * > > * > > * Called when the taglib encounters the "index" parameter. This > > * form takes an object. We try to convert and Integer and a > > * String. Anything else we barf on. > > * > > * @param o > > * An object which we'll try to convert. > > */ > > public void setIndex ( String s ) { > > if ( SHOWELEMENT_ALL_STRING.equalsIgnoreCase ( s ) ) { > > m_nIndex = SHOWELEMENT_ALL; > > return; > > } > > try { > > m_nIndex = Integer.parseInt ( s ); > > } catch ( NumberFormatException e ) { > > Dispatcher.log ( Log.NOTICE, "DisplayListElementTag.setElement", > > "The element: '" + s + > > "' is invalid, it should be a number" ); > > m_nIndex = SHOWELEMENT_UNDEF; > > } > > } > > > > The reason I have two setter methods for Index is that doing: > > > > > > > > is different than > > > > > > > > Is this a legal way of doing this? > > > > I ask because when I run tomcat using the SunJDK1.3, it works fine, > > however when I run tomcat with the SunJDK1.3 with Hotspot, it fails with > > > > java.lang.NumberFormatException: all > > at java.lang.Integer.parseInt(Integer.java:405) > > at java.lang.Integer.(Integer.java:540) > > at org.apache.jasper.runtime.JspRuntimeLibrary.convert \ > > (JspRuntimeLibrary.java:125) > > at org.apache.jasper.runtime.JspRuntimeLibrary.introspecthelper \ > > (JspRuntimeLibrary.java:201) > > at ui.html._0002fui_0002fhtml_0002fSList_0002ejspSList_jsp_3._jspService \ > > (_0002fui_0002fhtml_0002fSList_0002ejspSList_jsp_3.java:274) > > ... > > > > I don't actually think that is hotspot related. I think i'm doing > > something wrong. I've looked through the tomcat code, however not too > > particularly closely. I was hoping someone would know what's wrong. > > > > In a somewhat unrelated question, I tried having my setIndex() method > > defined as: > > > > public void setIndex ( Object o ) > > > > and then doing internal "instanceof" calls and casting to proper > > objects. This works in Tomcat 3.1, however it fails in Tomcat 4.0. > > > > Did something change in JSP/Taglib 1.2 that makes that type of > > declaration invalid? > > > > Thanks very much. > > > > ...alex...