2012-09-27 24 views
2

調用我testtag.jsp當我收到以下錯誤:屬性編輯器無法與PropertyEditorManager註冊:錯誤的自定義標籤invokation

org.apache.jasper.JasperException:無法轉換字符串「< C:出VAR = 'MYVAR'/>」至級 「javax.servlet.jsp.tagext.JspFragment」 爲屬性 「ATT1」:屬性編輯器不與PropertyEditorManager註冊

(詳細堆棧跟蹤是不相關的)

我使用的是J2EE 1.4服務器(也就是JSP 2.0)

WEB-INF/testtag.tag

<%@ tag body-content="scriptless" %> 
<%@ tag description="Renders some test html" %> 
<%@ attribute name="att1" fragment="true" required="true" %> 

<h1><jsp:invoke fragment="att1"/></h1> 

的JSP testtag.jsp使用這個標籤:

<%@page contentType ="text/html" pageEncoding="UTF-8" buffer="none" session="false" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %> 

<c:set var="myvar" value="hello world"/> 
<t:testtag att1="<c:out var='myvar'/>" /> 

回答

4

據JSP.7.1.6的JSP 2.0 specs(粗體突出我的),

在翻譯階段,各種pi在將 傳遞給標籤處理程序之前,頁面的eces被翻譯爲javax.servlet.jsp.tagext.JspFragment抽象類的 的實現。這在 體命名屬性(一個由<jsp:attribute>定義)的其被聲明爲 是任何JSP代碼自動完成的片段,或JspFragment類型的,在TLD。

也就是說,在testtag.jsp片段應該這樣其他的方式進行傳遞:

<%@page contentType ="text/html" pageEncoding="UTF-8" buffer="none" session="false" %> 
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> 
<%@ taglib prefix="t" tagdir="/WEB-INF/tags" %> 

<c:set var="myvar" value="hello world"/> 
<t:testtag> 
    <jsp:attribute name="att1"><c:out value='${myvar}'/></jsp:attribute> 
</t:testtag> 
相關問題