私はStruts2の初心者です。私はストラットのウェブサイトのチュートリアルに従うことにしている。私は このチュートリアル に従いました。私はそれにいくつかの問題があります。 Eclipseで動的Webプロジェクトを作成しました。それから私はチュートリアルに従いました。ただし、例を実行すると、次のエラーが発生します。
There is no Action mapped for namespace [/] and action name [hello] associated with context path [/Hello_World_Struts_2]. - [unknown location]
私は次のディレクトリ構造を持っています
そして私のstruts.xmlファイルは
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.Apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name="struts.devMode" value="true" />
<package name="basicstruts2" extends="struts-default" namespace="/">
<action name="index">
<result>/index.jsp</result>
</action>
<action name="hello" class="org.Apache.struts.helloworld.action.HelloWorldAction" method="execute">
<result name="SUCCESS">/HelloWorld.jsp</result>
</action>
</package>
</struts>
ご回答ありがとうございます。
struts.xml
構成ファイルは、(WEB-INF
ではなく)クラスパス上にある必要があります。
リンクされたチュートリアルは、Mavenビルドを想定しており、struts.xml
ファイルはsrc/main/resources
に配置する必要があると述べています。これは、Mavenビルドのクラスパスに含まれます。その部分を無視しているので、ソースディレクトリのルートに配置することをお勧めします。
classes/
の下にWEB-INF/
フォルダーを作成し、struts.xml
ファイルに入れる必要があります。
プロジェクトを右クリックします。プロパティデプロイメントビルドパスに移動し、すべての.jarファイルを/ WEB-INF/libに追加します。
その後、このエラーは発生しないはずです。
struts.xmlは、ディレクトリsrc /struts.xmlの下に配置する必要があります。
そして、WEB-INF/web.xmlでは、フィルターに基づいて支柱を構成する必要があります。
たとえば、default-action-refタグを追加することで問題を解決しました。
<default-action-ref name="home" />
パッケージタグの後
struts.xmlで
<package name="user" namespace="/" extends="struts-default">
<default-action-ref name="upload" />
同じエラーが発生し、再起動時にTomcatログを確認することで解決策が得られました:doctypeがstruts.xml
にありませんでした
だから私は追加しました
<xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.Apache.org/dtds/struts-2.0.dtd">
今それは動作します!
私は同じ問題を抱えていましたが、struts.xmlで名前空間が正しく言及されていなかったために直面していました。
Web.xmlに次のスニペットを追加しました。
<welcome-file>login.jsp</welcome-file>
また、名前空間を「/」のデフォルトとして作成しています...クエリに応答することを願っています。