2012-02-09 22 views
0


私はWebアプリケーションの開発にstruts2を使用しています。
私はstruts2に必要なjarファイルをインクルードしていますが、strutsアクションクラスを呼び出すときには404エラーがスローされています。
コンソールにエラーはなく、ブラウザはstruts.xmlがアクションクラスを呼び出すときに表示される.action拡張機能を表示しません。
私はjdk 1.6struts 2.0を使用しています。
このすべての責任を負う瓶がありません。私は単にここ
<s:form action = "Mergexmlaction" method = "post"/>Struts 2アクションクラスが動作しない

から関数を呼び出していますJSPで

私のstruts.xmlとweb.xml

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.multipart.maxSize" value="6000000000" /> 

    <package name="default" namespace="/jsp" extends="struts-default"> 
    <action name="Mergexmlaction" class="com.hm.merge.mergeaction.Mergexmlaction"> 
     <result name="success" >/jsp/Result.jsp</result> 
     <result name="error" >/jsp/Browse_multiplexmlfiles.jsp</result> 
     <interceptor-ref name="fileUpload"> 
     <param name="maximumSize">600000000</param> 
     </interceptor-ref> 
    </action> 
    </package> 
</struts> 

ウェブです。 xml

<?xml version="1.0" encoding="UTF-8"?> 
<web-app id="xml_file_merging" 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>xml_file_merging</display-name> 
    <filter> 
     <filter-name>struts2</filter-name> 
     <filter-class> 
      org.apache.struts2.dispatcher.FilterDispatcher 
     </filter-class> 
    </filter> 

    <filter-mapping> 
     <filter-name>struts2</filter-name> 
     <url-pattern>/*</url-pattern> 
    </filter-mapping> 

    <welcome-file-list> 
     <welcome-file>jsp/Browse_multiplexmlfiles.jsp</welcome-file> 
    </welcome-file-list> 
</web-app> 
+0

web.xmlについてはどうですか?あなたは支柱のディスパッチャーをそこに置いたのですか? – Thomas

+0

多くの情報が必要ですか?あなたのweb.xmlについて、あなたがこの情報を取得したときに打つURL。 –

+0

私のstrutsとweb.xmlファイルを追加しました。
jsp私は単純にsから関数を呼び出しています: –

答えて

4

いくつかの問題があります。

<package name="default" namespace="/jsp" extends="struts-default"> 

1)私は "JSP" の名前空間を持つに対するをお勧めします、それはどんな意味がありません。名前空間は、アプリケーションおよび/またはユーザにとって意味のあるものでなければなりません。

<action name="Mergexmlaction" class="com.hm.merge.mergeaction.Mergexmlaction"> 

2).action延長しない、またはまったく拡張するか、「アクション」で、アクションに名前を付けないでください。いずれにしても、最初のケースでは「アクション」を複製する理由はなく、拡張がない場合には「アクション」を使用する理由はありません。ただ、 "mergexml"、 "mergeXml" など

<result name="success" >/jsp/Result.jsp</result> 

3)私が直接クライアントアクセスを避けるためにWEB-INF下のJSPページを置くことをお勧めします。あなたがどんなインターセプタを宣言したら

<interceptor-ref name="fileUpload"> 

4)、あなたはすべてインターセプタを宣言する必要があります。このアクションでは、1つのインターセプタだけが実行されます。それは可能ですこれは大丈夫ですが、ほとんど正しいことはありません。

<welcome-file>jsp/Browse_multiplexmlfiles.jsp</welcome-file> 

5)そして、これはあなたがアプリケーションにアクセスしているかに応じて、究極の問題です。ウェルカムファイルは、おそらくS2タグを使用しているJSPページとして表示します。これは機能しません。タグは完全なS2リクエスト、バリュースタックなどに依存します。

S2のアプリケーションへのすべてのアクセスは、S2アクション、 JSPで行われます。直接アクセスされたJSPのレンダリングされたHTMLを見ると、名前空間もアクション拡張も表示されません。

+0

返信ありがとうございましたデイブ、私のウェルカムページは正常に実行されています..問題は、私は任意のアクションを呼び出しているときに実行されていないとさえ、任意のアクション拡張を表示していません。 –

+0

私がやったばかげた間違いがあります。私はstruts.xmlとしてstruts.xmlに名前を与えました....今、あなたの答えでそんなに学んだことがあり、将来のこれらのこと...トーンありがとう... :) –

1

エラー404は悪いリンクです。あなたが存在していないリンクを呼び出していることを意味します。 struts設定ファイルのマッピングを確認し、正しいURLを使用していることを確認してください。

0

package要素のnamespace属性はオプションであり、存在しない場合はデフォルト値 "/"が仮定されます。名前空間属性にデフォルト以外の値が設定されている場合は、パッケージ内のアクションを呼び出すURIに名前空間を追加する必要があります。たとえば、デフォルトの名前空間とパッケージでアクションを呼び出すためのURIは、この

されています:

/コンテキスト/ actionNameの

、デフォルト以外の名前空間をあなたに、パッケージ内のアクションを起動するにはこのURIを必要とする:

/コンテキスト/名前空間/ actionNameの

+0

私がしたばかげた誤りがあります。 ...私はStruts.xmlとしてstruts.xmlに名前を与えました....今、あなたの答えでそんなに学んだことがあり、将来これらのことを思い出させてくれるすべての人に感謝します。 .. :) –

関連する問題