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