JSP 태그 확장 으로이 문제를 해결하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/875715

  •  22-08-2019
  •  | 
  •  

문제

JSP 및 서블릿 개발부터 시작하여 JSP 페이지에 삽입 할 Bodyless 사용자 정의 태그에 문제가 있습니다.

수행 된 단계 :

  1. CustomTag.java를 성공적으로 작성하고 편집했습니다 (확장 TagSupport) 안에 WEB-INF/classes 예배 규칙서;
  2. 매우 간단한 예제와 함께 TLD 파일을 정의했습니다. <body-content> 와 함께 empty 몸이없는 태그의 값;
  3. Taglib 지시문이 내를 가리키는 JSP 페이지의 태그를 사용했습니다. /WEB-INF/tlds/site.tld 파일.

이 모든 것을 염두에두고 Tomcat이 다음과 같은 오류를 보내는 이유에 대한 단서가 있습니까?

CustomTag는 유형으로 해결할 수 없습니다

답변에 미리 감사 드리며 자세한 내용이 필요한지 문의하십시오.


내 TLD 파일은 다음과 같습니다.

<?xml version="1.0" encoding="ISO-8859-1"?>

< ! DOCTYPE taglib 
    PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN" 
    "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">

<taglib>
    <tlib-version>1.0</tlib-version>
    <jsp-version>1.2</jsp-version>
    <short-name>customlib</short-name>
    <description>Custom library.</description>
    <tag>
      <name>header</name>
      <tag-class>HeaderTag</tag-class>
      <body-content>empty</body-content>
      <description>...</description>
    </tag>
</taglib>

JSP 파일 :

<%@ page contentType="text/html; charset=UTF-8" language="java" import="java.sql.*" errorPage="" %>
<%@ taglib uri="/WEB-INF/tlds/customlib.tld" prefix="clib" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org    /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>title</title>
</head>

<body>
    <clib:header />
</body>
</html>

Headertag 클래스 :

import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.tagext.TagSupport;
import java.io.IOException;

public class HeaderTag extends TagSupport {

    public int doEndTag() throws JspTagException {
        try {
            pageContext.getOut().print("<p>header</p>");
        }
        catch (IOException e) {
            throw new JspTagException("Error.");
        }
        return EVAL_PAGE;
    }
}
도움이 되었습니까?

해결책

당신은 재건하고 재배치 했습니까, 맞습니까? 이 경우 가장 좋은 추측은 당신이u003Ctag-class> TLD 파일의 지침.

<tag>
    <name>cookieIterator</name>
    <tag-class>util.infoTemplates.CookieIterator</tag-class>
    <body-content>JSP</body-content>
</tag>

원인이 아닌 경우 TLD 파일과 예제 JSP를 게시하십시오.


편집 : 모든 태그 클래스에는 패키지가 있어야합니다. JSP 2.0 사양에 따라 (섹션 JSP 11.2) :

JSP 2.0 기준으로, 이름이없는 (일명 기본값) 패키지의 클래스를 참조하는 것은 불법입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top