读书人

eclipse 自定义标签的有关问题 没有用

发布时间: 2011-12-17 23:37:33 作者: rapoo

eclipse 自定义标签的问题 没有用过自定义标签,请各位大哥赐教,谢谢。

开发环境 eclipse3.0+lomboz3.0.1 +jboss3.2.3
我要加入自定义的标签 tag

我的jsp放在和index.jsp同一目录下就是web的根目录下
<%@ taglib uri="/myTag" prefix="myTag" %>
<%@ page contentType="text/html;charset=GB2312" %>
<html>
 <head>
<title>一个简单的自定义标签</title>
  </head>
  <body>
下面是应用这个简单的自定义标签的结果:<br>
<myTag:helloTag/>
   </body>
</html>

我的HelloTag.java
package hnkj.hello;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.TagSupport;

public class HelloTag extends TagSupport {
public HelloTag() {
}
public int doStartTag() throws JspTagException{
try{
JspWriter out=pageContext.getOut();
out.print("标签开始了。<font color=\"red\">hello!</font>");
}catch(Exception e) {
System.out.println(e);
}
return EVAL_BODY_INCLUDE;

}
public int doEndTag() throws JspTagException{
try {
JspWriter out=pageContext.getOut();
out.print("标签结束了。");
}
catch (Exception e) {
System.out.println(e);
}
return EVAL_PAGE;
}
}

我的myTag.tld 放在WEB-INF下和web.xml同一目录

<?xml version="1.0" encoding="ISO-8859-1"?>
<taglib>
<tlib-version>1.0</tlib-version>
<jsp-version>1.2</jsp-version>

<tag>
  <!-- 标签库名称-->
  <short-name>myTag</short-name>
  <!-- 标签库URI-->
  <uri>/myTag</uri>
  <!-- 标签库中的标签-->
  <!-- helloTag-->
  <tag>
   <!-- 标签名称-->
   <name>HelloTag</name>
  <!-- 标签对应的处理类-->
  <tag-class>hnkj.hello.HelloTag</tag-class>
  <!-- 标签体内容,没有标签体则设为empty-->
   <body-content>empty</body-content>
     </tag>
   </taglib>

我的web.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by Williams (501) -->

<!-- Copyright (c) 2002 by ObjectLearn. All Rights Reserved. -->
<web-app>

<jsp-config>
 <taglib>
<taglib-uri>/myTag</taglib-uri>
<taglib-location>/WEB-INF/myTag.tld</taglib-location>
  </taglib>
</jsp-config>


<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
<error-code>404</error-code>
<location>/error.jsp</location>
</error-page>
<error-page>
<error-code>500</error-code>
<location>/error.jsp</location>
</error-page>
</web-app>
/////////////////////////////////////////////////////////////////////////////////////////////////////
主要的错误提示
15:38:21,439 INFO [EmbeddedTomcatService] undeploy, ctxPath=/kcgzglWeb, warUrl=file:/D:/jboss-3.2.3/server/default/tmp/deploy/tmp11094kcgzglWeb.war/


15:38:21,439 INFO [Engine] StandardHost[localhost]: Removing web application at context path /kcgzglWeb
15:38:21,479 ERROR [Engine] StandardHost[localhost]: ContainerBase.removeChild: stop:
LifecycleException: Container StandardContext[/kcgzglWeb] has not been started

15:38:22,110 INFO [MainDeployer] Starting deployment of package: file:/D:/jboss-3.2.3/server/default/deploy/kcgzglWeb.war
15:38:23,121 INFO [EmbeddedTomcatService] deploy, ctxPath=/kcgzglWeb, warUrl=file:/D:/jboss-3.2.3/server/default/tmp/deploy/tmp11095kcgzglWeb.war/
15:38:23,992 ERROR [Digester] Parse Error at line 25 column 14: Element type "jsp-config" must be declared.
org.xml.sax.SAXParseException: Element type "jsp-config" must be declared.


15:38:24,003 ERROR [Digester] Parse Error at line 29 column 12: The content of element type "taglib" must match "(taglib-uri,taglib-location)".
org.xml.sax.SAXParseException: The content of element type "taglib" must match "(taglib-uri,taglib-location)".


15:38:24,033 ERROR [Digester] Parse Error at line 60 column 11: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".
org.xml.sax.SAXParseException: The content of element type "web-app" must match "(icon?,display-name?,description?,distributable?,context-param*,filter*,filter-mapping*,listener*,servlet*,servlet-mapping*,session-config?,mime-mapping*,welcome-file-list?,error-page*,taglib*,resource-env-ref*,resource-ref*,security-constraint*,login-config?,security-role*,env-entry*,ejb-ref*,ejb-local-ref*)".

15:38:24,093 ERROR [Digester] Parse Fatal Error at line 2 column 6: The processing instruction target matching "[xX][mM][lL]" is not allowed.
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.

15:38:24,093 ERROR [Engine] SingleSignOnContextConfig[/kcgzglWeb] Exception processing TLD at resource path /WEB-INF/myTag.tld
javax.servlet.ServletException: Exception processing TLD at resource path /WEB-INF/myTag.tld

15:38:24,093 ERROR [Engine] ----- Root Cause -----
org.xml.sax.SAXParseException: The processing instruction target matching "[xX][mM][lL]" is not allowed.
等等。麻烦各位给解决一下

[解决办法]
引入标签错误,改成:
<%@ taglib uri="/WEB-INFO/myTag.tld" prefix="myTag" % >

读书人网 >Java Web开发

热点推荐