2016-04-06 16 views
1

Ich bin ein Noob Struts-Framework. Ich versuche zu verstehen, wie Action-Mapping genau funktioniert. Angenommen, ich eine JavaScript-Datei, die einen AJAX-Request sendet:Struts struts-config.xml Action-Mapping erklärt

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

und meine struts-config.xml Datei sieht wie folgt aus:

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

Ich verstehe nicht, die Beziehung zwischen der Aktion und der form-bean. Wird meine Anfrage von TestAction bearbeitet? Wenn ja, was ist der Zweck der Form Bean type Attribut?

UPDATE: Für alle, die einen großen Überblick über Streben MCV Rahmen diesen Link überprüfen müssen: http://www.javaranch.com/journal/2002/03/newslettermar2002.jsp#struts

+1

Es ist S1 -> * struts-config_1_1.dtd *. –

+0

danke. Ich habe die Frage aktualisiert. – tommyO

Antwort

1

Die Beziehung des name Attribut in der Aktion Config gemacht wird. Wenn Sie also name="testForm" verwenden, wird Form Bean mit dem Namen testForm in die Ausführungsmethode der Aktion eingefügt.

Ihre Anfrage wird möglicherweise bearbeitet, wenn die relative URL mit dem Pfadwert in action config übereinstimmt und Sie das Action-Servlet im Servlet-Mapping-Muster zugeordnet haben.

Das type Attribut der <form-bean> wird verwendet, um FQCN der Bean-Klasse einzugeben, die wahrscheinlich die ActionForm erweitern würde. Es wird von Struts benötigt, um eine Bean bei Bedarf instanziieren zu können.

+0

Nachdem ich den Artikel gelesen habe, den ich oben in meinem Beitrag gepostet habe, macht deine Antwort Sinn für mich. Wenn ich weiß, dass das Attribut "validate" des action-Tags auf "true" gesetzt ist, erhält die Bean die Kontrolle über Struts vor der Action-Klasse. Wenn während der Formularüberprüfung Fehler gefunden werden, gibt bean ein ActionErrors-Objekt zurück. Dies sollte jede Ansicht weiterleiten, die sich im Attribut "input" des Aktionstags befindet. Wenn jedoch keine Formularüberprüfungsfehler gefunden werden, erhält die Action-Klasse die Kontrolle. ... klingt etwa richtig? – tommyO

+1

Das stimmt. Aber Ihre Frage betrifft nicht die Validierung. Wenn Sie eine andere Frage haben, sollten Sie dies tun, indem Sie eine neue Frage stellen. –