При определении настраиваемого тега я получил ошибку «HtmlEncoderTag не может быть преобразован в тип»? - PullRequest
0 голосов
/ 03 августа 2011

Я определяю пользовательский тег "htmlencoder". У меня есть эти файлы:

WEB-INF / classes / HtmlEncoderTag.jar, с кодом Java, подобным этому:

import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
    //....
}

WEB-INF / htmlencoder.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></short-name>
 <tag>
    <name>htmlencode</name>
    <tag-class>HtmlEncoderTag</tag-class>
    <body-content>JSP</body-content>
  </tag>
</taglib>

index.jsp:

<%@ taglib uri="WEB-INF/htmlencoder.tld" prefix="htmlencoder"%>
<head>
  <title>Watch out you sinners...</title>
</head>
<html>
  <body bgcolor="white">
    <htmlencoder:htmlencode><script <% //the error refers to this line %>
      type="javascript">BadStuff()</script></htmlencoder:htmlencode>
  </body>
</html>

Я получил ошибку «HtmlEncoderTag не может быть разрешен для типа», когда я запускаю свою страницу, и она показывает мне строку index.jsp: 7 (я упоминал выше).

Что мне делать?

Ответы [ 2 ]

0 голосов
/ 06 августа 2011

Я нашел ответ.Я не уверен, что это необходимо, но моя проблема решена следующим образом: вы должны поместить свой класс тега в пакет.например, ваш файл HtmlEncoderTag.jar должен быть размещен в WEB-INF / MyTag / и должен выглядеть так:

pckage MyTag;
import java.io.IOException;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport;
public class HtmlEncoderTag extends BodyTagSupport{
    //....
}

И ваш файл 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></short-name>
 <tag>
    <name>htmlencode</name>
    <tag-class>MyTag.HtmlEncoderTag</tag-class>
    <body-content>JSP</body-content>
  </tag>
</taglib>
0 голосов
/ 03 августа 2011

Две вещи:

  1. HtmlEncoderTag.jar должен быть в WEB-INF / lib, а не в WEB-INF / классах.
  2. HtmlEncoderTag в пакете? Ничего не отображается в вашем коде Java. Однако, если это так, имя класса в элементе tag-class должно быть полностью квалифицированным.
...