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]>