SpringBoot/Thymeleaf ein Attribut zum Controller schicken

vvs

Mitglied
Guten Abend!

ich habe eine html Seite:
Code:
<form action="#" id="huhuForm" th:object="${oTaskViewModel}" th:action="@{${actionHuhu}}" method="post">
...
<div class="...">
  <input class="xxx" type="button" onclick="$('#huhuForm').submit()" th:value="#{huhu.label}"/>
</div>
und Controller:
Code:
@PostMapping(HUHU + "/{taskId}/huhu")
public ModelAndView taskHuhu(@PathVariable(value = "taskId") Long taskId,
        @ModelAttribute @Valid OTaskViewModel oTaskViewModel,
        BindingResult bindingResult, Principal principal ) {
...
...
return null;
}
ich habe vor, ein Flag mitzusenden, falls man auf button geklickt hat, um Backendseitig zu unterscheiden, komme aber nicht voran.

Danke im Voraus.
 

vvs

Mitglied
Vielen Dank für die Rückmeldung. Ich habe zwei buttons und beim Klicken lande ich in die falsche Methode im Controller. Ich habe dann vor, im Controller zwei Methoden zu verschmelzen, muss aber wissen, auf welchen geklickt wurde.
Ich möchte so was Ähnliches haben:


<form action="#" id="huhuForm" th:eek:bject="${oTaskViewModel}" th:action="@{${actionHuhu}}" th:text="${button2}" method="post">

@PostMapping(HUHU + "/{taskId}/huhu")
public ModelAndView taskHuhu(@PathVariable(value = "taskId") Long taskId,
@ModelAttribute @Valid OTaskViewModel oTaskViewModel,
BindingResult bindingResult, Principal principal, String button2 ) {
...
...
return null;
}
 
Zuletzt bearbeitet:

mrBrown

Super-Moderator
Mitarbeiter
Vielen Dank für die Rückmeldung. Ich habe zwei buttons und beim klicken lande ich in die falsche Methode im Controller. Ich habe dann vor, im Controller zwei Methoden zu verschmelzen, muss aber wissen, auf welchen geklickt wurde.
Du hast also zwei Forms, die beide die selbe action und selbe method ("post") nutzen, aber unterschiedliche Methoden auslösen müssen?


BTW, Code bitte in Code-Tags :)
 

vvs

Mitglied
Ich habe zwei buttons, die unterschiedliche actions aufrufen, falls man aber auf der Seite einen Validierungsfehler verursacht, gib es eine Backendprüfung und die URL ändert sich: domain/huhu1 und beim klicken dann auf button2, muss die action2 genutzt werden, da aber in der url /huhu1 steht, wird die action1 genutzt und man landet in die methode1 im Controller, muss aber die methode2 aufgerufen werden.

Normalverfahren
Url: domain -> Button1 -> domain/huhu1 -> action1 -> methode1
Url: domain -> Button2 -> domain/huhu2 action2 -> methode2

User verursacht einen Validierungsfehler und die Seite wird neugeladen, Url sieht nun so aus: domain/huhu1
Und beim Klicken auf button2 lande ich im Controller in methode1, weil domain/huhu1 ist

Backenseitige Prüfung ist nicht zu vermeiden. Deswegen war meine Überlegung, wenn in die methode1 im Controller lande, gucke ich, ob doch button2 geklickt wurde und leite dann zu methode2 weiter.

BTW: sorry, wollte aber fett markieren

Danke im Voraus!
 

mrBrown

Super-Moderator
Mitarbeiter
Anstatt irgendwelche merkwürdigen Verrenkungen zu machen, sorg doch einfach dafür, das die Action passend ist?

Ich habe zwei buttons, die unterschiedliche actions aufrufen, falls man aber auf der Seite einen Validierungsfehler verursacht, gib es eine Backendprüfung und die URL ändert sich: domain/huhu1 und beim klicken dann auf button2, muss die action2 genutzt werden, da aber in der url /huhu1 steht, wird die action1 genutzt und man landet in die methode1 im Controller, muss aber die methode2 aufgerufen werden.
Kannst du in einfachen Worten erklären, was du vor hast, ohne irgendwelche technischen Erklärungen?
es klingt danach, als ob die aktuelle Seiten-URL eine Rolle spielt - das sollte sie dabei nicht. Ob die grad nur / oder /foo/bar ist, sollte* für die Action der Form keine Rolle spielen (*außer explizit gewollt).

Ist es eine Form mit zwei Buttons, die unterschiedliche Actions zur Folge haben, oder sind es zwei forms, mit jeweils einem Button?
 

mrBrown

Super-Moderator
Mitarbeiter
Wie schon angedeutet: wenn das nötig ist, ist da an anderer Stelle vermutlich etwas falsch. Das ist zwar Symptome bekämpfen, aber die Ursache ignorieren.
 

vvs

Mitglied
Es sind zwei Buttons die zwei unterschiedliche Forms ansprechen. In einem Form kann ein bestimmtes Feld nicht leer sein in dem anderen Form kann das Feld leer sein. Falls man das Feld leerlässt und auf den ersten Button klickt, findet eine Backenprüfung statt und man wird auf domain/huhu weitergeleitet das Feld wird rot markiert und erschein eine Fehlermeldung. Dann klickt man auf den anderen Button, hier kann man das Feld leerlassen und Methode im Controller wird aufgerufen. Jetzt muss ich im Controller eine Fallunterscheidung machen und erkennen können, was für ein Button geklickt wurde. Ich habe das mit hidden gemacht, finde die Lösung aber Kacke...
 

mrBrown

Super-Moderator
Mitarbeiter
Wenn es zwei verschieden Forms sind, dann sollten die auch unterschiedliche Actions bekommen, die jeweils unterschiedliche Methoden im Controller ansprechen.

Gibt es irgendetwas, was dagegen spricht?
 
K

kneitzel

Gast
Nur als kleine Ergänzung: gemeinsame Funktionalitäten lassen sich da ja auch problemlos in gemeinsam benutzte Methoden ausgliedern.

Sollte selbstverständlich sein, aber ich wollte es noch kurz erwähnen.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
ExceptionOfExpectation Persistierung in Hibernate(SpringBoot) Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation Desktop-Window in SpringBoot Frameworks - Spring, Play, Blade, Vaadin & Co 12
S java springboot HTML Produktstruktur Frameworks - Spring, Play, Blade, Vaadin & Co 1
G Java springboot Item mit ItemInstance verbinden Frameworks - Spring, Play, Blade, Vaadin & Co 2
ExceptionOfExpectation @Value() für application.properties [SpringBoot] Frameworks - Spring, Play, Blade, Vaadin & Co 9
Zrebna SpringBoot: Einfache RestAPI konsumieren gelingt nicht. Frameworks - Spring, Play, Blade, Vaadin & Co 6
Zrebna SpringBoot-Project: java.sql.SQLSyntaxErrorException: Access denied for user 'gap3'@'%' to database '3306/gap3' Frameworks - Spring, Play, Blade, Vaadin & Co 3
D SpringBoot Properties und Docker Frameworks - Spring, Play, Blade, Vaadin & Co 8
Dimax SpringBoot native Querry return ArrayList Frameworks - Spring, Play, Blade, Vaadin & Co 6
OnDemand SpringBoot Logrotation funktioniert nicht Frameworks - Spring, Play, Blade, Vaadin & Co 6
Robertop Springboot Server kann Jakarta Persistence Root nicht installieren? Frameworks - Spring, Play, Blade, Vaadin & Co 0
G SpringBoot MVC Frameworks - Spring, Play, Blade, Vaadin & Co 1
tom.j85 SpringBoot Rest-Application funktioniert nicht - Keine Fehlermeldungen Frameworks - Spring, Play, Blade, Vaadin & Co 13
L OpenJFX, SpringBoot und Gradle Frameworks - Spring, Play, Blade, Vaadin & Co 12
L SpringBoot Web Application Frameworks - Spring, Play, Blade, Vaadin & Co 1
S SpringBoot MySQL not run Frameworks - Spring, Play, Blade, Vaadin & Co 5
B Springboot und LDAP - Authentifizieren gegen Gruppe Frameworks - Spring, Play, Blade, Vaadin & Co 3
R Authentifizieren mit SpringBoot Frameworks - Spring, Play, Blade, Vaadin & Co 4
M Günstigste oder kostenlose Variante SpringBoot Application laufen zu lassen Frameworks - Spring, Play, Blade, Vaadin & Co 7
Z Springboot - Hauptklasse nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 5
A SpringCloud | SpringBoot | Eureka Frameworks - Spring, Play, Blade, Vaadin & Co 0
Avalon Get Request doppelt abfeuern ohne Post Redirect Get Pattern. Spring Boot Thymeleaf MVC Frameworks - Spring, Play, Blade, Vaadin & Co 12
Zrebna Spring Boot/Thymeleaf: Bestätigungsemail senden. Frameworks - Spring, Play, Blade, Vaadin & Co 2
Zrebna Thymeleaf: Wieso Dropdown-Menu nicht ausklappbar? Frameworks - Spring, Play, Blade, Vaadin & Co 1
Zrebna Spring - Thymeleaf: Wieso wird gem. Fallunterscheidung entsprechende View nicht geladen? Frameworks - Spring, Play, Blade, Vaadin & Co 3
G Thymeleaf Javascript Variable Frameworks - Spring, Play, Blade, Vaadin & Co 6
Dimax Spring Query +Thymeleaf Frameworks - Spring, Play, Blade, Vaadin & Co 5
Avalon CSS Datei wird in Spring Boot mit Thymeleaf im Standardordner nicht gefunden Frameworks - Spring, Play, Blade, Vaadin & Co 3
L Spring Thymeleaf Datatables Daten editieren? Frameworks - Spring, Play, Blade, Vaadin & Co 0
V Spring Boot, thymeleaf, Eingaben cashen oder per session speichern? Frameworks - Spring, Play, Blade, Vaadin & Co 2
T Spring Thymeleaf Argumente Frameworks - Spring, Play, Blade, Vaadin & Co 9
D Spring Date keine neue Tabelle fuer Attribut Frameworks - Spring, Play, Blade, Vaadin & Co 1
S Spring MongoDB: Attribut in der Superklasse und @Indexed erst in der Subklasse Frameworks - Spring, Play, Blade, Vaadin & Co 5

Ähnliche Java Themen

Neue Themen


Oben