Простой JSP - атрибут недействителен для тега в соответствии с TLD

Мой проект в eclipse -

введите здесь описание изображения

Я получаю следующую ошибку при запуске MyTagUser.jsp - HTTP Status 500 - /jsp/MyTagUser.jsp(14,0) Attribute subTitle invalid for tag Header according to TLD

org.apache.jasper.JasperException: /jsp/MyTagUser.jsp(14,0) Attribute subTitle 
invalid for tag Header according to TLD

org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:40)
 org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)...etc.

Фрагмент из Header.jsp –

<body>
<img src="../images/java_logo.gif"><br>
<em><strong> ${subTitle} </strong></em> <br>
</body>

Фрагмент из MyTagUser.jsp –

<%@ taglib prefix="myTags" tagdir="/WEB-INF/tags"%>
<html>
<head>
</head>
<body>
<myTags:Header  subTitle="Java is the best !!!" />
JSP and Servlets.
</body>
</html>

person Erran Morad    schedule 06.05.2014    source источник
comment
Похоже, вы пытаетесь следовать Head First Servlets and JSP, 2nd Edition. Через несколько страниц они расскажут о решении, которое дал @Борат Сагдиев.   -  person jspek    schedule 21.06.2018


Ответы (2)


Вы должны использовать директиву атрибута в файле Header.tag, как показано ниже:

<body>
<%@ attribute name="subTitle" required="true" rtexprvalue="true" %>
<img src="../images/java_logo.gif"><br>
<em><strong> ${subTitle} </strong></em> <br>
</body>
person Erran Morad    schedule 07.05.2014
comment
Я обнаружил, что rtexprvalue="true" является критической частью, когда столкнулся с ошибкой OP, пытающейся передать атрибут из одного пользовательского тега в другой. Оба правильно объявляли ожидаемые атрибуты, но без указания rtexprvalue="true" все равно возникнет ошибка. - person aroth; 05.11.2014

Первое решение:

Кажется, вы хотели включить область заголовка в свой jsp. Но это неправильный путь.

Вы должны создать header.jsp, а затем включить header.jsp в свой MyTagUser.jsp, и они должны находиться в каталоге WEB-INF (или его подкаталоге).

Метод включения: ‹%@ include file="WEB-INF/tags/header.jsp"> используйте этот код в MyTagUser.jsp

Второе решение:

в вашем файле тегов

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> core jstl taglib if necessary

<%@ attribute name="subtitle" required="true" %> this is subTitle attribute

вы должны определить атрибут(ы). проверьте http://docs.oracle.com/javaee/1.4/tutorial/doc/JSPTags5.html

person İlker Korkut    schedule 06.05.2014
comment
Я хочу создать файл Header.tag, а НЕ Header.jsp, который будет использоваться моим JSP. Как мне это сделать ? - person Erran Morad; 07.05.2014
comment
это во втором решении. - person İlker Korkut; 07.05.2014