2016-04-06 11 views
1

私はStrutsフレームワークのnoobです。私は、アクションマッピングがどのように正確に機能するかを理解しようとしています。私はアクションとフォームBeanの間の関係を理解し​​ていないStruts struts-config.xml動作マッピング説明

<?xml version="1.0" encoding="ISO-8859-1"?> 
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd"> 
<struts-config> 
    <form-beans> 
     <form-bean name="testForm" type="com.test.TestForm"/>  
    </form-beans> 

    <!-- Global Forwards -->  
    <global-forwards> 
    </global-forwards> 

    <!-- Action Mappings --> 
    <action-mappings> 

     <action path="/myTestUrl" 
       type="com.test.TestAction" 
       name="testForm" 
       scope="request" /> 

    </action-mappings> 
    <controller locale="true"/> 
</struts-config> 

:私はAJAX要求を送信するJavaScriptファイルがあるとします。

$("button").click(function(){ 
    $.ajax({url: "myTestUrl.do", success: function(result){ 
     //do something with result 
    }); 
}); 

を、私のstruts-config.xmlファイルは、次のようになります。私の要求はTestActionで処理されますか?その場合、フォームBean typeの属性の目的は何ですか?

UPDATE: ストラットMCVフレームワークの偉大な概要を必要とする人のために、このリンクをチェックアウト:http://www.javaranch.com/journal/2002/03/newslettermar2002.jsp#struts

+1

これはS1 - > * struts-config_1_1.dtdです。 –

+0

ありがとうございます。私は質問を更新しました。 – tommyO

答えて

1

関係は、アクションconfigにname属性によって行われます。したがって、name="testForm"を使用すると、名前がtestFormのフォームBeanがアクションのexecuteメソッドに注入されます。

相対URLがアクションconfigのパス値と一致し、サーブレットマッピングパターンでアクションサーブレットを*.doにマップした場合、リクエストが処理される可能性があります。

<form-bean>type属性は、おそらくActionFormを拡張するBeanクラスのFQCNを入力するために使用されます。必要なときにBeanをインスタンス化できるようにするには、Strutsが必要です。

+0

上記の編集で投稿した記事を読んだら、あなたの答えは私にとって意味があります。私が理解しているところでは、アクションタグの 'validate'属性がtrueに設定されている場合、BeanはActionクラスの前にStrutsによって制御されます。フォームの検証中にエラーが見つかると、BeanはActionErrorsオブジェクトを返します。これは、actionタグの 'input'属性内のどのようなビューでも転送する必要があります。ただし、フォームの検証エラーが見つからない場合、Actionクラスに制御が渡されます。 ...右の音については? – tommyO

+1

そうです。しかし、あなたの質問は検証に関するものではありません。別の質問がある場合は、新しい質問をしてください。 –