2011-07-08 53 views
0

你好,我想創建一個自定義的標籤,我得到一個錯誤:未知屬性類型(String)瞭解屬性 - 自定義標籤 - 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); 

     } 
} 

我從別人請需要幫助!

非常感謝!

回答

1

嘗試將<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> 

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%>"/>