2012-09-27 25 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> 
相关问题