File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
http://aspose.com/file-tools
The moose likes Web Component Certification (SCWCD/OCPJWCD) and the fly likes problem with Custom Tags Big Moose Saloon
  Search | Java FAQ | Recent Topics
Register / Login
JavaRanch » Java Forums » Certification » Web Component Certification (SCWCD/OCPJWCD)
Reply Bookmark "problem with Custom Tags" Watch "problem with Custom Tags" New topic
Author

problem with Custom Tags

Roopa Bagur
Ranch Hand

Joined: Nov 03, 2000
Posts: 267
Hi Everybody,
I have a problem which I think is because I am overlooking something small but important..but I don't know what..
Here is my .tld file:
<?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>
<!-- ============== Tag Library Description Elements each tag is defined by a tag element============= -->
<tlibversion>1.0</tlibversion>
<jspversion>1.1</jspversion>
<shortname>test</shortname>
<uri>/MyTag</uri>
<tag>
<name>hello</name>
<tagclass>com.myprojects.MyTag</tagclass>
<info>This is an sample tag which out puts Hello and a short message when used.</info>
</tag>
</taglib>

Here is my simple jsp:
<%@ page language="java" %>
<%@ taglib uri="/WEB-INF/MyTag.tld" prefix="test" %>
<html>
<head>
<title>Hello This is my first CustomTag</title>
</head>
<body bgcolor="white">
<UL>
<LI><test:hello/>
</UL>
</body>
</html>
My customtag class is simple & compiles fine. Somebody tell me what I the problem is when I try to run the jsp in tomcat I get the following error.
javax.servlet.ServletException: com/myprojects/MyTag (wrong name: MyTag)
at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:484)

Thanks,
Roopa.
Madhav Lakkapragada
Ranch Hand

Joined: Jun 03, 2000
Posts: 5040
Could you let us know the location of your class file and the .tld file?
Where are you placing them wrt to your JSP?
Edited:
An additional piece of info that will be helpful - What version of Tomcat are you running?
- satya
[ February 11, 2002: Message edited by: Madhav Lakkapragada ]

Take a Minute, Donate an Hour, Change a Life
http://www.ashanet.org/workanhour/2006/?r=Javaranch_ML&a=81
Roopa Bagur
Ranch Hand

Joined: Nov 03, 2000
Posts: 267
I am putting the class files in WEB-INF/classes and the .tld file under WEB-INF.
I am running Tomcat 4.0.1
Originally posted by Madhav Lakkapragada:
Could you let us know the location of your class file and the .tld file?
Where are you placing them wrt to your JSP?
Edited:
An additional piece of info that will be helpful - What version of Tomcat are you running?
- satya
[ February 11, 2002: Message edited by: Madhav Lakkapragada ]
Madhav Lakkapragada
Ranch Hand

Joined: Jun 03, 2000
Posts: 5040
<tagclass>com.myprojects.MyTag</tagclass>
putting the class files in WEB-INF/classes

The class files need to be in WEB-INF/classes/com/myprojects directory.

running Tomcat 4.0.1
In Tomcat 4.0.1, you need to define a taglib tag in the DD (web.xml) and specify the location of the TLD file. Only then the TLD file will be loaded correctly. This apparently is a bug.
So in the web.xml of your application add this, if you haven't already done so.

Try this and let us know....
Good luck.
- satya
Madhav Lakkapragada
Ranch Hand

Joined: Jun 03, 2000
Posts: 5040
And BTW, your TLD follows JSP 1.1 Specs.
So make sure that the MyTag.java follows the API for 1.1 JSP Spec and that you don't try to use the latest and greatest Interfaces.
The unfortunate fact is according to Tomcat 4.0.1, both the implementations compile correctly. So it is your responsibility to follow the correct API.
Let us know what happens, when you get a chance.
regds.
- satya
Roopa Bagur
Ranch Hand

Joined: Nov 03, 2000
Posts: 267
Satya,
I actually had everything in place just like you suggested. MyTag has the following src code
package com.myprojects;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import java.io.*;
import java.math.*;
public class MyTag extends TagSupport
{
public int doStartTag()
{
try
{
JspWriter out = pageContext.getOut();
out.print("Hello!!This message is from the custom tag MyTag class");
}
catch(IOException io)
{
System.out.println("Error generating the string message from MyTag class: ");
}
return (SKIP_BODY);
}
}
It is a very simple class.. I am still getting the following error
javax.servlet.ServletException: com/myprojects/MyTag (wrong name: MyTag)
java.lang.NoClassDefFoundError: com/myprojects/MyTag (wrong name: MyTag)
Can u think of anything else that I might be doing wrong.
Roopa.
Originally posted by Madhav Lakkapragada:
And BTW, your TLD follows JSP 1.1 Specs.
So make sure that the MyTag.java follows the API for 1.1 JSP Spec and that you don't try to use the latest and greatest Interfaces.
The unfortunate fact is according to Tomcat 4.0.1, both the implementations compile correctly. So it is your responsibility to follow the correct API.
Let us know what happens, when you get a chance.
regds.
- satya
Madhav Lakkapragada
Ranch Hand

Joined: Jun 03, 2000
Posts: 5040
I can suggest two things....
1. Use a relative URI in the taglib of your JSP like this:
<%@ taglib uri="MyTag.tld" prefix="test" %>
Then place the TLD file in the same dir that
your JSP is. If it works you know that its not
a problem with your class file.
2. If you are on a Windows system, verify that
each dir/file is named properly wrt to the case-sensitivity of a fin/dir name. Windows doesn't
differentiate between "mytag.tld" and "MyTag.tld".
So please double check each file involved.
3. Your tag declaration in the TLD doesn't have a
<bodycontent> element. I would like to suggest
that you put the foll. line after the tagclass element.
<bodycontent>empty</bodycontent>
This maynot be a big deal, but just for completeness sake. I know this was an issue in 3.8.?? versions of Tomcat.
Good luck.
- satya
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: problem with Custom Tags
 
Similar Threads
Custom Tag NOT Compiling
Tag library..
CUSTOM TAG NOT WORKING
Problem with Custom Tags
Use Weblogic to Run Custom JSP Tag -- Please Help!!!