Je dois envoyer une chaîne JSON au contrôleur Spring MVC. Mais je n’ai aucune liaison de formulaire, il me suffit d’envoyer des données JSON simples à la classe Controller. Je crée jQuery AJAX appel à la méthode du contrôleur comme le code ci-dessous.
$.ajax ({
url: "./save",
type: "POST",
data: JSON.stringify(array),
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function(){
alert("success ");
}
});
Mais comment puis-je le récupérer dans la méthode Controller? (Remarque: il s'agit simplement de données JSON simples et non d'une soumission de formulaire).
Ajouter les dépendances suivantes
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-asl</artifactId>
<version>1.9.7</version>
</dependency>
Modifier la demande comme suit
$.ajax({
url:urlName,
type:"POST",
contentType: "application/json; charset=utf-8",
data: jsonString, //Stringified Json Object
async: false, //Cross-domain requests and dataType: "jsonp" requests do not support synchronous operation
cache: false, //This will force requested pages not to be cached by the browser
processData:false, //To avoid making query String instead of JSON
success: function(resposeJsonObject){
// Success Message Handler
}
});
Côté contrôleur
@RequestMapping(value = urlPattern , method = RequestMethod.POST)
public @ResponseBody Person save(@RequestBody Person jsonString) {
Person person=personService.savedata(jsonString);
return person;
}
@RequestBody
- Objet Jert Covert en Java@ResponseBody
- convertir Java en json
Html
$('#save').click(function(event) {
var jenis = $('#jenis').val();
var model = $('#model').val();
var harga = $('#harga').val();
var json = { "jenis" : jenis, "model" : model, "harga": harga};
$.ajax({
url: 'phone/save',
data: JSON.stringify(json),
type: "POST",
beforeSend: function(xhr) {
xhr.setRequestHeader("Accept", "application/json");
xhr.setRequestHeader("Content-Type", "application/json");
},
success: function(data){
alert(data);
}
});
event.preventDefault();
});
contrôleur
@Controller
@RequestMapping(value="/phone")
public class phoneController {
phoneDao pd=new phoneDao();
@RequestMapping(value="/save",method=RequestMethod.POST)
public @ResponseBody
int save(@RequestBody Smartphones phone)
{
return pd.save(phone);
}
Dao
public Integer save(Smartphones i) {
int id = 0;
Session session=HibernateUtil.getSessionFactory().openSession();
Transaction trans=session.beginTransaction();
try {
session.save(i);
id=i.getId();
trans.commit();
}
catch(HibernateException he){}
return id;
}
Vous pouvez personnaliser l'objet JSON avec JSON.stringify (jsonObject) et le recevoir sur le contrôleur en tant que chaîne.
Dans le contrôleur, vous pouvez utiliser le javax.json pour le convertir et le manipuler.
Téléchargez et ajoutez le .jar aux bibliothèques du projet et importez le JsonObject.
Pour créer un objet JSON, vous pouvez utiliser
JsonObjectBuilder job = Json.createObjectBuilder();
job.add("header1", foo1);
job.add("header2", foo2);
JsonObject json = job.build();
Pour le lire dans String, vous pouvez utiliser
JsonReader jr = Json.createReader(new StringReader(jsonString));
JsonObject json = jsonReader.readObject();
jsonReader.close();