Hi Mike
Your tag syntax is a bit unusual. I would have expected
<my:message msg="This is a simple java alert message"/>
Then you put a variable msg in your tag class (with a getter & setter), and
the JSP runtime will populate it for you.
Regards
Ron
----- Original Message -----
From: "Mike.G" <hyli...@gmail.com>
To: "Tomcat Users List" <users@tomcat.apache.org>; <p...@pidster.com>
Sent: Monday, March 09, 2009 2:45 PM
Subject: Re: tomcat 6.0.18 issue with my customer Tag class
thanks very much.
let me try again
Mike
2009/3/8 Pid <p...@pidster.com>
Mike.G wrote:
> Hi, everyone,
> I run the tomcat 6.0.18 on my ubuntu 8.04.2, the jdk version is
> 1.6.0_07
>
> I configure the localhost 's ROOT to my home directory
> /home/ghw/myjava
> the configuration file like this:
>
> <?xml version='1.0' encoding='utf-8'?>
>
> <Server port="8005" shutdown="SHUTDOWN">
>
> <Listener className="org.apache.catalina.core.AprLifecycleListener"
> SSLEngine="on" />
> <Listener className="org.apache.catalina.core.JasperListener" />
> <Listener
className="org.apache.catalina.mbeans.ServerLifecycleListener"
> />
> <Listener
> className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener"
/>
>
> <GlobalNamingResources>
> <Resource name="UserDatabase" auth="Container"
> type="org.apache.catalina.UserDatabase"
> description="User database that can be updated and saved"
>
factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
> pathname="conf/tomcat-users.xml" />
> </GlobalNamingResources>
>
> <Service name="Catalina">
> <Connector port="8080" protocol="HTTP/1.1"
> connectionTimeout="20000"
> redirectPort="8443" />
> <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
> <Engine name="Catalina" defaultHost="localhost">
> <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
> resourceName="UserDatabase"/>
> <Host name="localhost" appBase="webapps"
> unpackWARs="true" autoDeploy="true"
> xmlValidation="false" xmlNamespaceAware="false">
>
> </Host>
> </Engine>
> </Service>
> </Server>
>
>
> and I created the directory understand
CATALINE_HOME/conf/Catalina/localhost
> and create a ROOT.xml in there
> like this:
> <?xml version="1.0" encoding="utf-8"?>
>
> <Context path="" docBase="/home/ghw/myjava" debug="9" reloadable="9" >
>
> </Context>
>
> when write a test index.jsp in /home/ghw/myjava, it works.
>
>
> and when I try to write a Tag class in there, it will be report Error:
>
> *type* Exception report
>
> *message*
>
> *description* *The server encountered an internal error () that
> prevented
it
> from fulfilling this request.*
>
> *exception*
>
> org.apache.jasper.JasperException: Unable to compile class for JSP:
>
> An error occurred at line: 10 in the jsp file: /test.jsp
> JavaScriptExampleTag cannot be resolved to a type
> 7: </head>
> 8: <body>
> 9: <p>This is a simple test page </p>
> 10: <my:message>
> 11: This is a simple java alert message
> 12: </my:message>
> 13:
>
>
> An error occurred at line: 10 in the jsp file: /test.jsp
> JavaScriptExampleTag cannot be resolved to a type
> 7: </head>
> 8: <body>
> 9: <p>This is a simple test page </p>
> 10: <my:message>
> 11: This is a simple java alert message
> 12: </my:message>
> 13:
>
>
> An error occurred at line: 10 in the jsp file: /test.jsp
> JavaScriptExampleTag cannot be resolved to a type
> 7: </head>
> 8: <body>
> 9: <p>This is a simple test page </p>
> 10: <my:message>
> 11: This is a simple java alert message
> 12: </my:message>
> 13:
>
>
> Stacktrace:
>
org.apache.jasper.compiler.DefaultErrorHandler.javacError(DefaultErrorHandler.java:92)
>
org.apache.jasper.compiler.ErrorDispatcher.javacError(ErrorDispatcher.java:330)
>
org.apache.jasper.compiler.JDTCompiler.generateClass(JDTCompiler.java:423)
> org.apache.jasper.compiler.Compiler.compile(Compiler.java:317)
> org.apache.jasper.compiler.Compiler.compile(Compiler.java:295)
> org.apache.jasper.compiler.Compiler.compile(Compiler.java:282)
>
org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:586)
>
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
>
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:342)
> org.apache.jasper.servlet.JspServlet.service(JspServlet.java:267)
>
>
> here is my web.xml
> <taglib>
> <taglib-uri>
> /WEB-INF/tld/JavaScriptExampleTag.tld
> </taglib-uri>
>
> <taglib-location>
> /WEB-INF/tld/JavaScriptExampleTag.tld
> </taglib-location>
> </taglib>
>
>
> and the tld file is like this:
> <?xml version="1.0" encoding="utf-8"?>
>
> <!DOCTYPE taglib
> PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"
> "http://java.sun.com/j2ee/dtd/web-jsptaglibrary_1_2.dtd">
>
> <taglib>
> <tlib-version>1.0</tlib-version>
> <jsp-version>1.2</jsp-version>
> <short-name>JavaScriptExampleTag</short-name>
> <uri>/WEB-INF/tld/JavaScriptExampleTag.tld</uri>
> <description>
> A simple tab library for the examples
> </description>
>
> <tag>
> <name>message</name>
> <tag-class>JavaScriptExampleTag</tag-class>
> <info>Display Alert Box</info>
> </tag>
>
>
>
> </taglib>
>
>
> and the Tag class like this:
> import java.io.IOException;
> import javax.servlet.jsp.*;
> import javax.servlet.jsp.tagext.*;
>
> public class JavaScriptExampleTag extends BodyTagSupport {
> public int doEndTag() throws JspTagException {
> String ls_alert = "";
>
> try {
> BodyContent lbc_bodycurrent = getBodyContent();
>
> if ( lbc_bodycurrent != null ) {
> String ls_message = lbc_bodycurrent.getString();
> JavaScriptExample JS = new JavaScriptExample();
>
> ls_alert = JS.alert(ls_message.trim());
>
> }
>
> pageContext.getOut().write(ls_alert);
>
> } catch ( IOException e ) {
> throw new JspTagException("Error " + e.toString());
> }
> return EVAL_PAGE;
> }
> }
Put your tag class in a package, and make sure the tag class is in the
correct folder like so:
myapp/index.jsp
myapp/WEB-INF/classes/com/myapp/YourTag.class
myapp/WEB-INF/tld/YourTag.tld
Adjust the tag class definition in the the TLD accordingly.
p
> and the Bean class is like this:
> import java.io.Serializable;
>
> public class JavaScriptExample implements Serializable {
>
> public JavaScriptExample() {
>
> }
>
> public String alert(Object aobj_data) {
> return( start_script + " alert(\" " +
> aobj_data.toString() + "\");" +
> end_script );
> }
>
>
>
> //private area
> private String start_script = "<script language=\"javascript\">";
> private String end_script = "</script>";
>
>
>
> }
>
>
> anyone can help me on this?
>
> thanks very much
>
>
> Mike
> javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
>
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@tomcat.apache.org
For additional commands, e-mail: users-h...@tomcat.apache.org