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:
> >
> >     <tag>
> >         <name>displayCLE</name>
> >         <tagclass>com.funkware.DisplayCLETag</tagclass>
> >         <teiclass>com.funkware.DisplayCLEExtraInfo</teiclass>
> >         <info>Display a CLE</info>
> >         <attribute>
> >             <name>index</name>
> >             <required>true</required>
> >             <rtexprvalue>true</rtexprvalue>
> >         </attribute>
> >     </tag>
> >
> > In my "DisplayCLETag.java" file, I have the following:
> >
> >     /**
> >      * <!-- setIndex-->
> >      *
> >      *    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;
> >     }
> >
> >     /**
> >      * <!-- setIndex-->
> >      *
> >      *    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:
> >
> >     <af:displayCLE index="1"/>
> >
> > is different than
> >
> >     <af:displayCLE index="<%= i %>"/> <!-- where i is an int and == 1 -->
> >
> > 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...


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

Reply via email to