A little more info, seems the TagExtraInfo is causing some problems for me.
Here's a snippet from the class:

+++++++++
public class ValueTEI extends TagExtraInfo {
    
    private boolean declared = false;
    
    public VariableInfo[] getVariableInfo(TagData tagData) {
        if (!declared) {
            declared = true;
            return new VariableInfo[] {
                new
VariableInfo("value","java.lang.String",true,VariableInfo.AT_BEGIN)
            };
        }
        else {
            return new VariableInfo[] {
                new
VariableInfo("value","java.lang.String",false,VariableInfo.NESTED)
            };
        }
    }
}
++++++++++

Why is value being declared for Tomcat but differently for Resin?

And below, replace "key1" with "value" in the snippet. Typo there.

-Hakan

-----Original Message-----
From: Kilic, Hakan [mailto:[EMAIL PROTECTED] 
Sent: Monday, March 22, 2004 6:55 PM
To: Tomcat Users List
Subject: Tomcat vs Resin - Tag Libraries

Hi all,

I'm working on making sure an application I've written works on Tomcat,
Resin and a few others, and I've come across a very interesting problem.

The application is working with tag libraries, and runs on Apache/Tomcat
4.1.12, and Resin 2.1.6.

My tag library is "IfSet".

In the _jspService() that Tomcat generates I get the following code snippet:

+++++
com.mycompany.tags.IfSet _jspx_th_dm_ifSet_0 = new
com.mycompany.tags.IfSet();
_jspx_th_dm_ifSet_0.setPageContext(pageContext);
_jspx_th_dm_ifSet_0.setParent(null);
_jspx_th_dm_ifSet_0.setName("myname");
java.lang.String value = null;

try {
        int _jspx_eval_dm_ifSet_0 = _jspx_th_dm_ifSet_0.doStartTag();
      value = (java.lang.String) pageContext.findAttribute("key1");
      if (_jspx_eval_dm_ifSet_0 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
        try {
                if (_jspx_eval_dm_ifSet_0 !=
javax.servlet.jsp.tagext.Tag.EVAL_BODY_INCLUDE) {
                              out = pageContext.pushBody();
  _jspx_th_dm_ifSet_0.setBodyContent((javax.servlet.jsp.tagext.BodyContent)
out);
                              _jspx_th_dm_ifSet_0.doInitBody();
++++++++++++

But resin produces this code snippet:

+++++++++++
com.caucho.jsp.QBodyContent _jsp_endTagHack0 = null;
      if (_jsp_tag0 == null) {
        _jsp_tag0 = new com.mycompany.tags.IfSet();
        _jsp_tag0.setPageContext(pageContext);
        _jsp_tag0.setParent((javax.servlet.jsp.tagext.Tag) null);
        _jsp_tag0.setName("myname");
      }

      int _jspEval1 = _jsp_tag0.doStartTag();
      if (_jspEval1 != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {
        if (_jspEval1 ==
javax.servlet.jsp.tagext.BodyTag.EVAL_BODY_BUFFERED) {
          out = pageContext.pushBody();
          _jsp_endTagHack0 = (com.caucho.jsp.QBodyContent) out;
          _jsp_tag0.setBodyContent(_jsp_endTagHack0);
        }
        value = (java.lang.String)pageContext.findAttribute("key1");

++++++++

All I'm doing in my html is calling <%pageContext.findAttribute("key1")%>,
and I'm getting an error that "value" isn't declared. For some reason Tomcat
will declare is using "java.lang.String value = null;" while Resin will not.
Also, Tomcat is initializing the tag library right away, with the statement 

com.mycompany.tags.IfSet _jspx_th_dm_ifSet_0 = new
com.mycompany.tags.IfSet();

but Resin instead uses 

com.mycompany.tags.IfSet _jsp_tag0 = null;

Is there some part of the spec Tomcat is implementing properly/differently?
Is it how I'm using my tag library?

Any help would be great, since this is in the servlet code generated, and
it's a bit hard to work backwards to figure out what my Tomcat is doing and
why.

Thanks!

-HK

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to