Struts2 Verständnisfrage

Hallo, vielleicht kann mir jemand weiterhelfen.

Ich arbeite mich in einen bestehenden Quellcode ein und hatte bis jetzt mit maven, struts2, jquery, … leider nichts am Hut.

display.jsp Formular

<s:form id="uAddForm" action="user-add-form" namespace="/prot" theme="bootstrap">

der erzeugte HTML Code sieht wie folgt aus:

<form id="uAddForm" action="/Testsystem/prot/user-add-form.action" method="post">

das .action wird wohl durch diesen Befehl in der struts.xml angehangen

<constant name="struts.action.extension" value="action">

Frage 1: wird /Testsystem/prot/ automatisch angehangen? Oder ist das auch irgendwo in der xml definiert?

UserAddForm.java

public class UserAddForm extends ActionSupport

Frage 2: Als Formular action ist ja nun „user-add-form.action“ definiert und die Klasse UserAddForm wird bei Button Klick aufgerufen. Wie erfolgt aber das Mapping zur Klasse, die ja UserAddForm heißt und nicht user-add-form? Ich konnte nur einen Verweis in die andere Richtung finden: @Results(name= „success“, location = „display.jsp“).

Ich habe eigentlich eher sowas hier erwartet:

public class user-add-form extends ActionSupport

:frowning:

Frage 3: Klärt sich wahrscheinlich mit Frage 2
Wenn ich den action Parameter im Formular umbenenne von „user-add-form“ in „user-add-form2“ erfolgt keine Umsetzung in /Testsystem/prot/user-add-form2.action. Deshalb meine Vermutung das user-add-form irgendwo definiert ist. Aber eine File-Inhalts Suche über das komplette Projekt und Dateitypen brachte nur den einen Treffer in dem form der display.jsp…

Danke für die Unterstützung! :slight_smile:

Separator used to build the action name, MyAction → my-action. This character is also used as the separator between the action name and the result in templates, like action-result.jsp

Tja das gehört sich wohl so bei struts… :smiley:

Der s:form Tag bei Struts2 generiert die tatsächliche URL deines Formulares nach ganz einfachen regeln.

///

In der Anwendung wird anscheinend das Convention Plugin verwendet.
Dieses Plugin macht ein automatisches Action Mapping von URL my-action.action zur Klasse MyAction.

Das ganze kannst du natürlich auch mittels der @Action(“myAction”) Annotation überschreiben.

jogep