调用我时出现以下错误testtag.jsp:
testtag.jsp
org.apache.jasper.JasperException:无法将字符串“ ”转换为属性“ att1”的类“ javax.servlet.jsp.tagext.JspFragment”:属性编辑器未向PropertyEditorManager
(详细的堆栈跟踪无关紧要)
我正在使用J2EE 1.4服务器(即JSP 2.0)
我的 WEB-INF/testtag.tag
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>
testtag.jsp使用此标记的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'/>" />
根据JSP 2.0规范的 JSP.7.1.6 (粗体显示),
在转换阶段,将页面的各个部分转换为javax.servlet.jsp.tagext.JspFragment抽象类的实现,然后再传递给标签处理程序。 对于 在TLD中声明为片段或类型的 命名属性 (由定义的 属性) 的主体 中的 任何JSP代码, 此操作都是自动完成的。<jsp:attribute>``JspFragment
javax.servlet.jsp.tagext.JspFragment
<jsp:attribute>``JspFragment
也就是说,在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>