In JSP 1.2, you have to specifically use the API for the JSTL expression language engine if you want attributes to use the "${...}" syntax. In JSP 2.0, this will happen automagically, but we're not there yet.
If you want one example of how this is done, look at the Struts-EL contrib library, which is part of the Struts distribution. You'll find that the Tag classes pass the attribute values through the EL to generate the final value. > -----Original Message----- > From: Randy Belknap [mailto:[EMAIL PROTECTED]] > Sent: Monday, December 30, 2002 5:29 PM > To: '[EMAIL PROTECTED]' > Subject: Cooperating tag > > > Should I be able to create a variable using <c:set> and then > use it to set > the value of an attribute in my own custom tag? > > When I try and use "${myVar}" to pass the value to my custom tag, what > receive is the literal "${myVar}". In otherwords it doesn't > evaluate the > expression. I've tested under Tomcat 4.0.6, 4.1.17 and 4.1.18. > > I've created the smallest possible test case and am including > all the files. > > > Thanks, > > Randy > > === JSP PAGE === > <%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %> > <%@ taglib prefix="x" uri="http://java.sun.com/jstl/xml" %> > <%@ taglib uri="portaltags" prefix="xe" %> > <html><body> > > <c:set var="myVar" scope="page" value="1"/> > > <p><xe:MsgType messageType="${myVar}"/> > > </body></html> > > === The taglib.tld === > <?xml version="1.0" encoding="ISO-8859-1" ?> > <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP > Tag Library > 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> > > <taglib> > <tlibversion>1.0</tlibversion> > <jspversion>1.2</jspversion> > <shortname>xe</shortname> > <uri>http://www.test.com/portaltags.html</uri> > <info>XePortal</info> > > <tag> > <name>MsgType</name> > <tagclass>com.test.XeTestTag</tagclass> > <info>Gets message types</info> > <attribute> > <name>messageType</name> > <required>true</required> > <rtexprvalue>true</rtexprvalue> > </attribute> > </tag> > </taglib> > > === The web.xml === > <?xml version="1.0" encoding="ISO-8859-1"?> > > <!DOCTYPE web-app > PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" > "http://java.sun.com/dtd/web-app_2_3.dtd"> > > <web-app> > <display-name>Portal</display-name> > <description> > Portal > </description> > > <taglib> > <taglib-uri>portaltags</taglib-uri> > <taglib-location>/WEB-INF/taglib.tld</taglib-location> > </taglib> > > </web-app> > > === The Java file === > package com.test; > > import javax.servlet.jsp.JspTagException; > import javax.servlet.jsp.tagext.TagSupport; > > public class XeTestTag extends TagSupport > { > private String messageType = "0"; > /** > * Constructor for XeTestTag. > */ > public XeTestTag() > { > super(); > } > > /** > * Sets the messageType. > * @param messageType The messageType to set > */ > public void setMessageType(String messageType) > { > this.messageType = messageType; > System.out.println("MessageType: " + messageType); > } > > /** > * Output the requested function. > * @return int > */ > public int doEndTag() throws JspTagException > { > try > { > pageContext.getOut().write(messageType); > } > catch (java.io.IOException e) > { > throw new JspTagException("IO Error: " + > e.getMessage()); > } > return EVAL_PAGE; > } > > } > > -- > To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]> -- To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]> For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>