web.xml中添加taglib标签 报错

现象为如下的web.xml在Eclipse Helios中出现警告信息 

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
<display-name>WebTest</display-name> 
<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> 

<filter>
<filter-name>sitemash</filter-name>
<filter-class>com.opensymphony.module.sitemesh.filter.PageFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>sitemash</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

<taglib>
<taglib-uri>sitemesh-decorator</taglib-uri>
<taglib-location>/WEB-INF/sitemesh-decorator.tld</taglib-location>
</taglib>
<taglib>
<taglib-uri>sitemesh-page</taglib-uri>
<taglib-location>/WEB-INF/sitemesh-page.tld</taglib-location>
</taglib> 

</web-app> 

 

错误信息: 
Description Resource Path Location Type 
cvc-complex-type.2.4.a: Invalid content was found starting with element 'taglib'. 
One of '{ 
"http://java.sun.com/xml/ns/j2ee":description, 
"http://java.sun.com/xml/ns/j2ee":display-name, 
"http://java.sun.com/xml/ns/j2ee":icon, 
"http://java.sun.com/xml/ns/j2ee":distributable, 
"http://java.sun.com/xml/ns/j2ee":context-param, 
"http://java.sun.com/xml/ns/j2ee":filter, 
"http://java.sun.com/xml/ns/j2ee":filter-mapping, 
"http://java.sun.com/xml/ns/j2ee":listener, 
"http://java.sun.com/xml/ns/j2ee":servlet, 
"http://java.sun.com/xml/ns/j2ee":servlet-mapping, 
"http://java.sun.com/xml/ns/j2ee":session-config, 
"http://java.sun.com/xml/ns/j2ee":mime-mapping, 
"http://java.sun.com/xml/ns/j2ee":welcome-file-list, 
"http://java.sun.com/xml/ns/j2ee":error-page, 
"http://java.sun.com/xml/ns/j2ee":jsp-config, 
"http://java.sun.com/xml/ns/j2ee":security-constraint, 
"http://java.sun.com/xml/ns/j2ee":login-config, 
"http://java.sun.com/xml/ns/j2ee":security-role, 
"http://java.sun.com/xml/ns/j2ee":env-entry, 
"http://java.sun.com/xml/ns/j2ee":ejb-ref, 
"http://java.sun.com/xml/ns/j2ee":ejb-local-ref, 
"http://java.sun.com/xml/ns/j2ee":service-ref, 
"http://java.sun.com/xml/ns/j2ee":resource-ref, 
"http://java.sun.com/xml/ns/j2ee":resource-env-ref, 
"http://java.sun.com/xml/ns/j2ee":message-destination-ref, 
"http://java.sun.com/xml/ns/j2ee":message-destination, 
"http://java.sun.com/xml/ns/j2ee":locale-encoding-mapping-list}' is expected. 
web.xml /WebTest/WebContent/WEB-INF line 41 XML Problem 

原因: 
在jsp2.0中,且2.4版的DTD验证中,taglib描述符,正确写法是放到<jsp-config></jsp-config>描述符中。 

解决办法: 
1)将<web-app id="WebApp_ID" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 
改为<web-app>,去除验证。 

2)按规范,把taglib标签放进jsp-config标签中。如下: 

<jsp-config> 
   <taglib> 
    <taglib-uri>/tags/struts-bean</taglib-uri> 
    <taglib-location>/WEB-INF/lib/struts-bean.tld</taglib-location> 
   </taglib> 
   <taglib> 
    <taglib-uri>/tags/struts-html</taglib-uri> 
    <taglib-location>/WEB-INF/lib/struts-html.tld</taglib-location> 
   </taglib> 
   <taglib> 
    <taglib-uri>/tags/struts-logic</taglib-uri> 
    <taglib-location>/WEB-INF/lib/struts-logic.tld</taglib-location> 
   </taglib> 
</jsp-config>

 

posted @ 2016-08-30 09:52  乱世_独自美  阅读(1252)  评论(0)    收藏  举报