cbarnes wrote:
> I am writing a number of custom tags, all of which return a list of string
> values to the JSP by using a TEI class.
> I want to write a generic TEI class that can be used by all the custom tags.
> This TEI class needs to be supplied with a list of attribute names that it
> has to create VariableInfo objects for. The tag classes have this list of
> attribute names as a tag attribute, so I thought that I could get this list
> from the TagData object in the TEI class by doing something like:
> Vector listOfAttributes = (Vector)data.getAttribute("attributeNames");
>
> However, this doesn't appear to work. I get a ClassCastException trying to
> cast the object to a Vector.

The Object returned by getAttribute() is either a String or the special
Object instance named REQUEST_TIME_VALUE, to tell the TEI that the
attribute is defined by a request-time attribute expression and can
not be evaluated at translation time. So if you specify a list of names
as a tag attribute, you have to use getAttributeString(), or cast the
returned value from getAttribute() to a String, and then parse the
list yourself. Something like this:

   String varNames = data.getAttributeString("varNames");
   StringTokenizer st = new StringTokenizer(varNames, ",");

> Can anyone tell me if its possible to get this to work?
>
> Is there a better way of supplying a list of attribute names to the TEI
> class.
>
> Am I going to have to give in and write a different TEI class for each of
> the custom tags?

If you use a web container that supports JSP 1.2 (most of the recent
ones do), you can avoid writing TEI classes altogether and declare
the variables to create in the TLD instead:

   <tag>
     <name>myTag</name>
     <tag-class>com.mycompany.MyTag</tag-class>
     <variable>
       <name-from-attribute>id</name-from-attribute>
       <variable-class>java.lang.String</variable-class>
       <declare>true</declare>
       <scope>AT_END</scope>
     </variable>
     ...
   </tag>

JSP 1.2 has many other nice features, for instance a new IterationTag
interface for tag handlers that loop over their bodies but do not
need to read the body content (like you asked about in another mail).
Here's a couple of articles that describes the new features:

   <http://www.onjava.com/pub/a/onjava/2001/10/10/jsp.html>
   <http://www.onjava.com/pub/a/onjava/2001/11/07/jsp12.html>

Hans
--
Hans Bergsten           [EMAIL PROTECTED]
Gefion Software         http://www.gefionsoftware.com
JavaServer Pages        http://TheJSPBook.com

===========================================================================
To unsubscribe: mailto [EMAIL PROTECTED] with body: "signoff JSP-INTEREST".
For digest: mailto [EMAIL PROTECTED] with body: "set JSP-INTEREST DIGEST".
Some relevant FAQs on JSP/Servlets can be found at:

 http://archives.java.sun.com/jsp-interest.html
 http://java.sun.com/products/jsp/faq.html
 http://www.esperanto.org.nz/jsp/jspfaq.jsp
 http://www.jguru.com/faq/index.jsp
 http://www.jspinsider.com

Reply via email to