41

web.xmlファイルに問題があります。エラー:

要素タイプ「web-app」のコンテンツは、「(icon?、display-name?、description?、distributable?、context-param *、filter *、filter-mapping *、listener *、servlet *、servlet-mapping」と一致する必要があります*、session-config?、mime-mapping *、welcome-file-list?、error-page *、taglib *、resource-env- ref *、resource-ref *、security-constraint *、login-config?、security -role *、env-entry *、ejb-ref *、ejb-local-ref *)"。

ただし、私のweb.xmlファイルはエラーの順序になっています。

これが私のweb.xmlです:

<!DOCTYPE web-app PUBLIC
         "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
         "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <display-name>Archetype Created Web Application</display-name>

    <context-param>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
    </context-param>
      
    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
        <description></description>
    </context-param>

    <servlet>
        <servlet-name>Faces Servlet</servlet-name>
        <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>
      
    <servlet-mapping>
        <servlet-name>Faces Servlet</servlet-name>
        <url-pattern>/faces/*</url-pattern>
    </servlet-mapping>

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

WebLogic10.3.4を使用しています。問題について何か考えはありますか?

4

12 に答える 12

79

私の問題を解決する1つの非常に単純な解決策。

スキーマ参照をから変更します

<!DOCTYPE web-app PUBLIC
   "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
   "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app></web-app>

これに

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/javaee" 
         version="2.5" 
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> 
         // ...
         // your all content goes here

</web-app>
于 2014-11-06T11:19:17.927 に答える
21

Eclipseでも同じ問題が発生しました。タグをDTDとして並べ替えた後、エラーが発生します。Eclipseを再起動してみることもできます。

于 2013-08-04T00:28:48.167 に答える
8

Web.xmlのDTDには、要素サーブレット、サーブレットマッピングなどの特定の順序が必要であることがわかりました。

そこで、ECLIPSEのXMLファイルのデザインビューから各要素を追加し始めました。

できます!。DTDに適した方法でXMLファイルを作成できます。

于 2014-12-14T23:37:31.563 に答える
7

<!DOCTYPE .. >タグを削除したところ、うまくいきました。実はどれだけ重要かわかりません。

于 2016-08-02T10:59:58.073 に答える
4

「すべてコピー」-「切り取り」-「貼り付け」-「保存」という誰かの提案に従いましたが、これでメッセージが明確になったようです。前後のファイルを比較すると、「貼り付けられた」バージョンでは、すべてのタブがスペースに変換されていることがわかりました。したがって、Eclipseのweb.xmlバリデーターはタブを好まないようです。

于 2014-03-12T15:31:16.500 に答える
2

このようにコードを再配置します...

<web-app>
  <display-name>Archetype Created Web Application</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>

 <context-param>   
    <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
    <param-value>client</param-value>
    <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
  </context-param>

  <context-param>
    <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
    <param-value>resources.application</param-value>
    <description></description>>
  </context-param>

  <servlet>
    <servlet-name>Faces Servlet</servlet-name>
    <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
 <servlet-mapping>
   <servlet-name>Faces Servlet</servlet-name>
   <url-pattern>/faces/*</url-pattern>
 </servlet-mapping>

さらにサーブレットがある場合は、マッピングの上にサーブレットを定義し、その後でサーブレットをマップします。

于 2013-12-19T11:53:01.437 に答える
2

最後に、ソースビューのweb.xmlに直接入力する代わりに、Eclipseのデザインビューを使用してサーブレットとサーブレットマッピングを構成することで、この問題を解決しました。お役に立てれば。

于 2018-04-05T11:59:55.643 に答える
2

この部分は削除され、エラーが解決されました。

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  "http://java.sun.com/dtd/web-app_2_3.dtd" >
于 2018-05-20T14:53:39.803 に答える
1

これと同じ問題を扱っていて、web.xml構文にまったく問題がない場合は、「切り取り(web.xml内のすべてのコンテンツ)」、「メモ帳に貼り付け」、「メモ帳からコピー」を実行することをお勧めします。 「web.xmlに貼り付けます」-「そして最後にweb.xmlを保存します」。それらの目に見えないキャラクター、タブなどを愛するようになりました。

于 2014-09-29T21:51:39.450 に答える
1

上記の解決策を試すときは、ファイルを保存することを忘れないでください。私の場合、最新のスキーマ記述子を使用して保存した後、エラーはなくなりました。

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
    id="WebApp_ID" version="3.1">

    <!-- your content here -->

</web-app>`
于 2018-09-11T01:52:20.340 に答える
0

DOCTYPEを削除して、Eclipseを再起動しました。機能した。やってみてください

于 2021-08-20T06:06:31.450 に答える
0

「xsi:schemaLocation ="http://java.sun.com/xml/ns/javaeehttp://java.sun.com/xml/ns/javaee/web-app_3_0.xsd "」を使用する代わりに

使用する

xsi:schemaLocation = "http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"

于 2021-11-23T07:09:17.330 に答える