2011-07-08 8 views
0

こんにちは、私はカスタムタグを作成しようとしていますし、私は次のエラーを取得しています:不明な属性タイプ(文字列) - カスタムタグ - JSP

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); 

     } 
} 

I誰かから必要助けてください!

ありがとうございます!

答えて

1

person属性に<type>java.lang.String</type>を追加してみてください。

私のために働いている完全な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> 

TLDファイルを使用しtextInput.jspファイル

<%@ 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%>"/> 
関連する問題