Alex,

Until the expert group rules on this, one workaround (that will always work)
is to simply do the following (assuming a property of type Object):

    instead of:
        <mytags:foo bar="abc"/>
    use:
        <mytags:foo bar='<%="abc"%>'/>

Another way is to define a PropertyEditor associated with your
property of type Object.

As Craig mentioned, this problem has been the subject of numerous
discussions. Here are some pointers that may help you and others
understand the issue.

http://www.mail-archive.com/tomcat-dev@jakarta.apache.org/msg00732.html
http://www.mail-archive.com/tomcat-dev@jakarta.apache.org/msg01323.html
http://www.mail-archive.com/tomcat-dev@jakarta.apache.org/msg01328.html

    -- Pierre

"Craig R. McClanahan" wrote:
> 
> 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]

Reply via email to