Почему <taglib> дает мне проблему в моем web.xml
У меня есть этот 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: "Неверный контент был найден, начиная с элемента...
Что еще мне нужно сделать?
Ответы
Ответ 1
Используйте это обозначение:
<jsp-config>
<taglib>
<taglib-uri>mytags</taglib-uri>
<taglib-location>/WEB-INF/jsp/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>
Но я рекомендовал прочитать ссылку . В этом учебном пособии вы узнаете, как избежать объявления taglib в web.xml в случае JSP 2.0
Ответ 2
В XSD, упомянутом в вашем XML, указано, что для сложного типа 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>
Элемент taglib вообще не ссылается на XSD.
Из чтения этой ссылки кажется, что вам не нужно объявлять теги в документе веб-приложения. Просто наличие атрибута version = "2.5" означает, что вы можете ссылаться на теги в своих JSP.
Ответ 3
Если taglib находится внутри зависимостей maven,, просто установите область для компиляции.
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts-taglib</artifactId>
<version>1.3.10</version>
<scope>compile</scope>
</dependency>