小编典典

未在PropertyEditorManager中注册属性编辑器:自定义标签调用错误

jsp

调用我时出现以下错误testtag.jsp

org.apache.jasper.JasperException:无法将字符串“ ”转换为属性“
att1”的类“ javax.servlet.jsp.tagext.JspFragment”:属性编辑器未向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>

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

阅读 687

收藏
2020-06-10

共1个答案

小编典典

根据JSP 2.0规范的 JSP.7.1.6 (粗体显示),

在转换阶段,将页面的各个部分转换为javax.servlet.jsp.tagext.JspFragment抽象类的实现,然后再传递给标签处理程序。
对于 在TLD中声明为片段或类型的 命名属性 (由定义的 属性) 的主体 中的 任何JSP代码,
此操作都是自动完成的。<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>
2020-06-10