简单JSP - 根据TLD对标记无效

时间:2014-05-06 21:20:13

标签: java jsp java-ee jsp-tags

我的日食项目 -

enter image description here

当我运行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>

2 个答案:

答案 0 :(得分:5)

您必须在Header.tag文件中使用attribute指令,如下所示 -

<body>
<%@ attribute name="subTitle" required="true" rtexprvalue="true" %>
<img src="../images/java_logo.gif"><br>
<em><strong> ${subTitle} </strong></em> <br>
</body>

答案 1 :(得分:0)

第一个解决方案:

看来,你想在jsp中包含标题区域。但这是错误的方式。

您应该创建一个header.jsp,然后将header.jsp包含在MyTagUser.jsp中,它们应该位于WEB-INF目录(或其子目录)下。

包括方法:&lt;%@ include file =&#34; WEB-INF / tags / header.jsp&#34;&gt;在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