【问题标题】:Simple JSP - Attribute invalid for tag according to TLD简单 JSP - 根据 TLD 的标记属性无效
【发布时间】:2014-06-23 15:47:55
【问题描述】:

我在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>

【问题讨论】:

  • 您似乎正在尝试跟随Head First Servlets and JSP, 2nd Edition。几页后,他们将讨论@Borat Sagdiyev 给出的解决方案

标签: java jsp jakarta-ee jsp-tags


【解决方案1】:

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

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

【讨论】:

  • 我发现rtexprvalue="true" 是我在尝试将属性从一个自定义标签传递到另一个自定义标签时遇到 OP 错误时的关键部分。两者都正确地声明了预期的属性,但没有指定 rtexprvalue="true" 无论如何都会出错。
【解决方案2】:

第一个解决方案:

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

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

包含方法:在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

【讨论】:

  • 我想创建一个 Header.tag 文件,而不是我的 JSP 将使用的 Header.jsp。我该怎么做?
  • 它在第二个解决方案中。
猜你喜欢
  • 2018-04-19
  • 1970-01-01
  • 1970-01-01
  • 2014-08-30
  • 1970-01-01
  • 1970-01-01
  • 2021-12-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多