Ich versuche, zwei Objekte in zwei anderen Formen zu füllen. Und im Controller drucke ich nur diese Objekte. meinen Code: Controller:Füllen mehrerer Objekte im Frühjahr mvc
@RequestMapping(value = "/mvcaddDevice", method = RequestMethod.POST)
public String addDevice(
@ModelAttribute("deviceType") DeviceTypeDTO dt,
@ModelAttribute("marka") MarkaDTO marka,
ModelMap model
) {
System.out.println("you send deveiceType=" + dt);
System.out.println("you send marka=" + marka);
model.addAttribute("dt", dt);
model.addAttribute("marka", marka);
return "result";
}
Ansicht:
<%@page contentType="text/html" pageEncoding="windows-1252"%>
<%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
<title>JSP Page</title>
</head>
<body>
<h2>${message}</h2>
<img src="assets/goodboy.jpg"/>
<form:form method="POST"
action="/mvcaddDevice"
commandName="deviceType"
modelAttribute="deviceType"
>
<table>
<tr>
<td><form:label path="name">Name</form:label></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td><form:label path="order">order</form:label></td>
<td><form:input path="order" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add device type"/>
</td>
</tr>
</table>
</form:form>
<form:form
method="POST"
action="/mvcaddDevice"
commandName="marka"
modelAttribute="marka"
>
<table>
<tr>
<td><form:label path="markaName">Name</form:label></td>
<td><form:input path="markaName" /></td>
<td><form:input path="name" /></td>
</tr>
<tr>
<td colspan="2">
<input type="submit" value="Add marka"/>
</td>
</tr>
</table>
</form:form>
</body >
</html>
in Controller-Methode haben wir @ModelAttribute ("device") DeviceTypeDTO dt und @ModelAttribute ("marka") MarkaDTO marka .Diese Mittel welches Objekt wird mit dt- und marka-Instanzen in Verbindung gebracht werden. In der ersten Form bearbeite ich DeviceType-Felder und in der zweiten Form fülle ich Marka-Felder. wenn ich zuerst drücke, gehen diese Felder zu dt (wegen modelAttribute = "deviceType"). Wenn ich zweites drücke, gehen diese Felder zu marka. (wegen ModelAttribute = "marka") @ModelAttribute verwendet zur Entscheidung, welches Formular welchem Objekt zugeordnet wird. Aber es funktioniert nicht.
ich brauche gleiche Methode, aber für 2 objects.so i dont wanna gleiche Methode 2 mal schreiben
Ausgang:
Info: you send deveiceType=DeviceTypeDTO{name=test, order=0}
Info: you send marka=MarkaDTO{markaName=null, name=test}
was ist der Grund? Wie kann ich es lösen?
Fragen Sie, wie Sie mit mehreren Formularen auf einer Seite umgehen können? – ck1
Ich möchte jedes Formular mit der gleichen Controller-Methode behandeln. Wenn ich das erste Formular posten, wird das erste Modelattribut gehen, und wenn ich auf das zweite Formular klicke, wird das zweite Modelattribut gehen. Aber ein Namensfeld füllt jedes Objekt, obwohl ich zuerst klicke Formular – Sarkhan
Meinst du * mit der gleichen Methode * für 2 verschiedene Anfragen? –