Неизвестный тип атрибута (String) для атрибута - Пользовательский тег - JSP - PullRequest
0 голосов
/ 08 июля 2011

Здравствуйте. Я пытаюсь создать пользовательский тег и получаю следующую ошибку:

HTTP Status 500 -

type Exception report

message

description The server encountered an internal error () that prevented it from fulfilling this request.

exception

org.apache.jasper.JasperException: /jsp/textInput.jsp(8,0) Unknown attribute type (String) for attribute person.
    org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
    org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
    org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:236)
    org.apache.jasper.compiler.Validator$ValidateVisitor.checkXmlAttributes(Validator.java:1162)
    org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:819)
    org.apache.jasper.compiler.Node$CustomTag.accept(Node.java:1512)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2393)
    org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2399)
    org.apache.jasper.compiler.Node$Root.accept(Node.java:489)
    org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2343)
    org.apache.jasper.compiler.Validator.validate(Validator.java:1737)
    org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:165)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:314)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:294)
    org.apache.jasper.compiler.Compiler.compile(Compiler.java:281)
    org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:566)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:317)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:337)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:266)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:803)

note The full stack trace of the root cause is available in the Apache Tomcat/6.0.16 logs.

Мой код следующий:

taglib.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>
    <jsp-version>1.1</jsp-version>
    <tlibversion>1.0</tlibversion>
    <shortname></shortname>
        <tag>
        <name>ShowTag</name>
        <tagclass>com.jjolt.ShowTag</tagclass>
                <attribute>
                   <name>person</name>
                   <required>true</required>
                   <rtexprvalue>true</rtexprvalue>
                </attribute>
    </tag>
</taglib>

Data.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" %>
<html>
<body>
<form name="frm" method="get" action="textInput.jsp">
<table align="center">

  <tr>
    <td>Insert your name </td>
    <td><input type="text" name="studentName"></td>
    <td><input type="submit" name="Done" value="Done"></td>
  </tr>

</table>
</form>
</body>
</html>

textInput.jsp

<%@ page contentType="text/html; charset=iso-8859-1" language="java" %>
<%@ taglib uri="/myTLD" prefix="mytag"%>
<%
String temp=request.getParameter("studentName");
%>


<mytag:ShowTag person= "<%=temp%>"/>

ShowTag.java

package com.jjolt;

import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;


public class ShowTag extends TagSupport {

        private String person;


    public int doEndTag() throws JspException {


        JspWriter out = pageContext.getOut();
        try {


                        out.println("Hello " + person);


        } catch (Exception e) {
        }
        return super.doEndTag();
    }

        public void setPerson(String person){

            this.person = person;

        }

        public String getPerson(String person){

            return (this.person);

        }
}

Мне нужна помощь от кого-нибудь, пожалуйста!

Большое спасибо!

1 Ответ

1 голос
/ 20 июля 2011

Попробуйте добавить <type>java.lang.String</type> к атрибуту person.

Полный 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>

    <jsp-version>1.1</jsp-version>
    <tlibversion>1.0</tlibversion>
    <shortname>myTLD</shortname>
    <uri>http://www.fakeaddress.com</uri>
    <tag>
        <name>ShowTag</name>
        <tagclass>com.fake.ShowTag</tagclass>
        <attribute>
            <name>person</name>
            <required>true</required>
            <rtexprvalue>true</rtexprvalue>
            <type>java.lang.String</type>
        </attribute>
    </tag>
</taglib>

Файл textInput.jsp, использующий файл tld

<%@ page contentType="text/html; charset=iso-8859-1" language="java" %>
<%@ taglib uri="http://www.fakeaddress.com" prefix="mytag"%>

<%String temp=request.getParameter("studentName");%>

<mytag:ShowTag person= "<%=temp%>"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...