Alex Tang wrote:
> 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.
>
This has been the subject of no small discussion on the expert group for JSP 1.2. A
final decision
is still pending AFAIK, at which time Tomcat 4.0 will change if it needs to.
>
> Thanks again.
>
> ...alex...
>
Craig
>
> "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]
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]