Je valide un formulaire en utilisant jquery.validate.js et j'ai besoin d'identifier les entrées en double, pour cela j'utilise une méthode personnalisée c'est-à-dire :
jQuery.validator.addMethod("uniqueName", function(name, element) {
var response;
$.ajax({
type: "POST",
dataType : "json",
url:"${pageContext.request.contextPath}/company/getDuplicate",
data:"name="+name,
async:false,
success:function(data){
response = data;
},
error: function (data) {
alert(request.responseText);
}
});
}, "Name is Already Taken");
dans la section des règles :
rules : {
name : {
required : true,
uniqueName : true
}
},
errorElement : "span",
messages : {
name : {
required : "Name Is Required"
}
}
Voici mon code JSP :
<label>Name:</lable>
<form:input path="name"></form:input>
Il cherche l'url spécifié mais Json envoie une valeur nulle à la méthode.
C'est ma méthode de contrôle :
@RequestMapping(value = "/company/getDuplicate", method = RequestMethod.POST, headers = "Accept=*/*")
public @ResponseBody void getTitleList(HttpServletRequest request, HttpServletResponse response) {
JSONObject json = new JSONObject();
String data = ((String)json.get("name"));
List<Company> matched = companyService.getDuplicate(data);
if(matched != null && !"".equals(matched)){
json.put("name", "present");
System.out.flush();
}
else{
json.put("name", "notPresent");
System.out.flush();
}
}
Ce que je veux, c'est : 1. comment envoyer la valeur de la zone de texte au contrôleur (Json envoyant null dans mon cas). 2. Dans la méthode ci-dessus, je ne pense pas que 'if statement have write condition' parce que si 'name' n'existe pas dans la base de données, alors la variable 'matched' se présente comme ceci => []
Veuillez m'aider à résoudre ce problème. Merci d'avance.