2

my を呼び出すと、次のエラーが発生しますtesttag.jsp

org.apache.jasper.JasperException: Unable to convert string "<c:out var='myvar'/>" to class "javax.servlet.jsp.tagext.JspFragment" for attribute "att1": Property Editor not registered with the attribute 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'/>" />
4

1 に答える 1

4

JSP 2.0仕様のJSP.7.1.6によると(太字強調鉱山)、

javax.servlet.jsp.tagext.JspFragment翻訳段階では、タグ ハンドラに渡される前に、ページのさまざまな部分が抽象クラスの実装に翻訳されます。これは、TLD でフラグメントまたは type であると宣言された名前付き属性( によって定義されたもの)の本体内のすべての 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>
于 2012-09-27T14:38:02.423 に答える