【问题标题】:Eclipse won't reckognize and validate JSP tag dir attributesEclipse 不会识别和验证 JSP 标记目录属性
【发布时间】:2012-06-05 19:51:24
【问题描述】:

我目前正在使用 Spring Source Tools 2.9.1 - 但我在使用标准 Eclipse J2EE 发行版时遇到了同样的问题。

我正在编写带有 jsp 视图的 java web 应用程序。

为了更好地重用代码,我在WEB-INF\tags 文件夹中创建了一些标签 - *.tag 文件

enum.tag 文件示例:

<jsp:root version="2.0" 
    xmlns:form="http://www.springframework.org/tags/form" 
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:spring="http://www.springframework.org/tags"
    xmlns:tags="urn:jsptagdir:/WEB-INF/tags"
    xmlns:fmt="http://java.sun.com/jsp/jstl/fmt"
    xmlns:c="http://java.sun.com/jsp/jstl/core">

    <jsp:directive.tag pageEncoding="UTF-8" />

    <jsp:directive.attribute name="value" required="true" rtexprvalue="true" type="Object" />
    <jsp:directive.attribute name="cssClass" required="false" rtexprvalue="true" />

    <span class="enum ${value.cssClass} ${cssClass}"> 
        <span class="message"> 
            <spring:message code="${value.name}" />
        </span>
    </span>

</jsp:root>

如果我在我的jsp中使用这个标签,这个标签会被验证器识别,但标签属性不是。

所以我收到这行 jsp 的警告

<tags:enum value="${t.state}" />

警告:

Undefined attribute name "value"

标签nemaspace初始化为:

xmlns:tags="urn:jsptagdir:/WEB-INF/tags

如何设置 eclipse 以正确验证 tagdir 的标签?

【问题讨论】:

  • Eclipse Indigo SR2 和 JBoss Tools 会出现同样的行为。如果标签直接在 WEB-INF/tags 中,则可以识别属性,但如果它们在 TLD 中用 声明的 JAR 中,则不会。

标签: eclipse jsp taglib


【解决方案1】:

我使用 jsps(和标签)的 XML 版本 - 所有的字段都是有效的 XML 文档,它使用类似的语法

<jsp:directive.tag pageEncoding="UTF-8" body-content="scriptless" />

<jsp:directive.attribute name="caption" required="false" rtexprvalue="true" />
<jsp:directive.attribute name="labelInfix" required="false" rtexprvalue="true" />

我现在意识到并检查了我需要使用 tagx 扩展(与 jspx 一起)。通过此更改,Eclispe 验证运行良好。

【讨论】:

  • 它只适用于 tagx 和 jspx?有时间我会试试(这里有很多重构),但我更喜欢 tag 和 jsp(xml 语法有点过于冗长)。
  • 我同时使用 xml 版本,我使用的是 jspx 和标签扩展,现在我测试了将一个标签重命名为 tagx 并且它有所帮助 - 所以我可以确认这是有效的
【解决方案2】:

是的,在撰写本文时,使用 Eclipse Luna,Eclipse 对 JAR 中的自定义标签(Oracle 称为“打包标签文件”)的 JSP 标签验证仍然很糟糕。我有两个 Java 项目,一个包含有我的 .tags 和 TLD(TLD 有元素)的 JAR。我设法获得了 JSP 标签验证,例如&lt;t:customTag /&gt; 工作,但 Eclipse 仍将黄色的所有属性标记为“未定义的属性名称”。

我能够通过以下方式在我的依赖项目中进行标签验证:

  1. 将标签项目添加到Build path->Projects->"Required projects 在构建路径上”
  2. 在我的 JAR/tag 项目本身中,在 Java build path->Order 和 导出,我将 JAR 文件本身标记为已导出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 2022-10-13
    • 2013-11-17
    • 2010-11-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-15
    相关资源
    最近更新 更多