为啥 <taglib> 在我的 web.xml 中给我一个问题?

Posted

技术标签:

【中文标题】为啥 <taglib> 在我的 web.xml 中给我一个问题?【英文标题】:Why is <taglib> giving me a problem in my web.xml?为什么 <taglib> 在我的 web.xml 中给我一个问题? 【发布时间】:2011-04-16 01:44:14 【问题描述】:

我有这个 web.xml

<?xml version="1.0" encoding="UTF-8"?>
  <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
   <display-name>jsp-tags</display-name>
     <taglib>
       <taglib-uri>mytags</taglib-uri>
       <taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
    </taglib>
    <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
   </welcome-file-list> 
</web-app>

突出显示并且IDE给出的错误是:“发现无效内容以元素开头...

我还需要做什么?

【问题讨论】:

您还需要做什么?您需要接受@Jaydeep 的回答。 :-P 【参考方案1】:

使用这个符号:

<jsp-config> 
        <taglib> 
               <taglib-uri>mytags</taglib-uri> 
               <taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location> 
        </taglib> 
</jsp-config>

但我建议阅读此link。本教程将让您了解如何避免在 JSP 2.0 的情况下在 web.xml 中声明标记库

【讨论】:

【参考方案2】:

在您的 XML 中引用的 XSD 中,它指出对于复杂类型 web-appType,您只能选择零到多个以下元素:

<xsd:choice minOccurs="0" maxOccurs="unbounded">
  <xsd:group ref="javaee:descriptionGroup"/>
  <xsd:element name="distributable"
 type="javaee:emptyType"/>
  <xsd:element name="context-param"
 type="javaee:param-valueType">

  </xsd:element>
  <xsd:element name="filter"
 type="javaee:filterType"/>
  <xsd:element name="filter-mapping"
 type="javaee:filter-mappingType"/>
  <xsd:element name="listener"
 type="javaee:listenerType"/>
  <xsd:element name="servlet"
 type="javaee:servletType"/>
  <xsd:element name="servlet-mapping"
 type="javaee:servlet-mappingType"/>
  <xsd:element name="session-config"
 type="javaee:session-configType"/>
  <xsd:element name="mime-mapping"
 type="javaee:mime-mappingType"/>
  <xsd:element name="welcome-file-list"
 type="javaee:welcome-file-listType"/>
  <xsd:element name="error-page"
 type="javaee:error-pageType"/>
  <xsd:element name="jsp-config"
 type="javaee:jsp-configType"/>
  <xsd:element name="security-constraint"
 type="javaee:security-constraintType"/>
  <xsd:element name="login-config"
 type="javaee:login-configType"/>
  <xsd:element name="security-role"
 type="javaee:security-roleType"/>
  <xsd:group ref="javaee:jndiEnvironmentRefsGroup"/>
  <xsd:element name="message-destination"
 type="javaee:message-destinationType"/>
  <xsd:element name="locale-encoding-mapping-list"
 type="javaee:locale-encoding-mapping-listType"/>
</xsd:choice>

XSD 中根本没有引用 taglib 元素。

从阅读this link 看来,您似乎不需要在 web-app 文档中声明标记库。只需拥有 version="2.5" 属性意味着您可以在 JSP 中引用标签。

【讨论】:

【参考方案3】:

如果 taglib 在 ma​​ven 依赖项中, 只需将范围设置为编译。

<dependency>
     <groupId>org.apache.struts</groupId>
     <artifactId>struts-taglib</artifactId>
     <version>1.3.10</version>
     <scope>compile</scope>
</dependency>

【讨论】:

以上是关于为啥 <taglib> 在我的 web.xml 中给我一个问题?的主要内容,如果未能解决你的问题,请参考以下文章

java中jstl标签使用问题求助

web.xml中taglib的问题

jstl标签在xml中声明

为啥我不能在我的用户控件中访问我的视图模型?

web.xml_jsp-config

taglib.jsp