属性编辑器未向 PropertyEditorManager 注册:自定义标记调用时出错

2024-05-08

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

org.apache.jasper.JasperException:无法将属性“att1”的字符串“”转换为类“javax.servlet.jsp.tagext.JspFragment”:属性编辑器未注册到属性编辑器管理器

(详细的堆栈跟踪无关紧要)

我使用的是 J2EE 1.4 服务器(即 JSP 2.0)

My 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>

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

根据 JSP.7.1.6JSP 2.0 规范 http://download.oracle.com/otndocs/jcp/jsp-2.0-fr-oth-JSpec/(粗体强调我的),

在翻译阶段,页面的各个部分被翻译成 的实施javax.servlet.jsp.tagext.JspFragment抽象类,之前 被传递给标签处理程序。这是自动完成的对于任何 JSP 代码 身体 of a 命名属性(由以下定义的一个<jsp:attribute>)被声明为 是一个片段,或者类型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>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

属性编辑器未向 PropertyEditorManager 注册:自定义标记调用时出错 的相关文章

随机推荐