2012-06-21 7 views
2

Bonjour les gars est-il possible d'avoir plusieurs formulaires sur simple jsp et aussi avec un seul bouton?printemps mvc formulaire multiple sur jsp

Voici ma page jsp où j'ai deux formes, je sais de cette façon, elle n'enregistre que la seconde forme.

<html> 
<head> 
<title>Update General Info</title> 
<script type="text/javascript"> 
function validateForm() 
{ 
var name=document.getElementById("name").value; 
var surname=document.getElementById("surname").value; 
var email=document.getElementById("email").value; 
var amka=document.getElementById("amka").value; 
if (name.length == 0) 
    { 
    alert("Name must be filled out"); 
    return false; 
} else if(surname.length == 0){ 
     alert("Surname must be filled out"); 
     return false; 
    }else if(email.length == 0){ 
     alert("Email must be filled out"); 
     return false; 
    }else if(amka.length == 0){ 
     alert("Amka must be filled out"); 
     return false; 
    } 
} 
</script> 
</head> 
<body> 
<h1>Update General Info</h1> 

<c:if test="${!empty user}"> 
<c:url var="saveArticleUrl" value="/articles/updateGeneralSave.html" /> 
<form:form onsubmit="return validateForm()" modelAttribute="user" method="POST" > 
<table bgcolor="DBEADC" border=1> 
<tr> 
<th>Id</th> 
<th>Team</th> 
<th>Name</th> 
<th>Surname</th> 
<th>Username</th> 
<th>Password</th> 
<th>Email</th> 
<th>AMKA</th> 
<th>Status</th> 
<th>Department</th> 
</tr> 


<tr> 
<td><form:input readonly="true" path="id" value="${user.id}"></form:input></td> 
<td><form:input readonly="true" path="team" value="${user.team}"></form:input></td> 
<td><form:input id="name" path="name" value="${user.name}"></form:input></td> 
<td><form:input id="surname" path="surname" value="${user.surname}"></form:input></td> 
<td><form:input readonly="true" path="username" value="${user.username}"></form:input></td> 
<td><form:input type="password" readonly="true" path="password" value="${user.password}"></form:input></td> 
<td><form:input id="email" path="email" value="${user.email}"></form:input></td> 
<td><form:input id="amka" path="amka" value="${user.amka}"></form:input></td> 
<td><form:input id="status" path="status" value="${user.status}"></form:input></td> 

<td><form:select path="department"> 
<c:forEach items="${departments}" var="dep"> 
<c:if test="${dep.dep_name==user.department }"> 
<OPTION selected VALUE="${dep.dep_name}"><c:out value="${dep.dep_name}"/></OPTION> 
</c:if> 
<c:if test="${dep.dep_name!=user.department }"> 
<OPTION VALUE="${dep.dep_name}"><c:out value="${dep.dep_name}"/></OPTION> 
</c:if> 

</c:forEach> 
</form:select></td> 
</tr> 
</table> 




</form:form> 
</c:if> 
<c:if test="${!empty phones}"> 
<c:url var="saveArticleUrl" value="/articles/updatePhoneSave.html" /> 
<form:form onsubmit="return validateForm()" modelAttribute="updatePh" method="POST" action="${saveArticleUrl}"> 
<table bgcolor="DBEADC" border=1> 
<tr> 
<th>Id</th> 
<th>Phone</th> 
<th>Mobile</th> 
<th>Fax</th> 
</tr> 



<tr> 
<td><form:input readonly="true" path="id" value="${phones.id}"></form:input></td> 
<td><form:input id="phone" path="phone" value="${phones.phone}"></form:input></td> 
<td><form:input id="mobile" path="mobile" value="${phones.mobile}"></form:input></td> 
<td><form:input path="fax" value="${phones.fax}"></form:input></td> 
</tr> 


</table> 



<input type="submit" value="Update" /> 
</form:form> 

</c:if> 
</body> 
</html> 

et les contrôleurs

RequestMapping(value = "updateGeneral" , method = RequestMethod.GET) 
     public ModelAndView updateGeneral(@ModelAttribute("user") Users user ,@ModelAttribute("updatePh") Phone updatePh, @RequestParam("id")Integer id){ 
     Map<String, Object> model = new HashMap<String, Object>(); 
      model.put("user", articleService.getUser(id)); 
      model.put("departments", articleService.listDepartments()); 
      //twra mpike 
      model.put("phones", articleService.getPhones(id)); 
     return new ModelAndView("updategeneral",model); 
    } 
    //evala akoma ena modelattri 
    @RequestMapping(value = "updateGeneralSave" , method = RequestMethod.POST) 
     public ModelAndView updateGeneralSave(@ModelAttribute("user") Users user){ 


     articleService.updateUser(user); 

     return new ModelAndView("redirect:/articles/listusers.html"); 
    } 


@RequestMapping(value = "updatePhoneSave" , method = RequestMethod.POST) 
     public ModelAndView updatePhonesave(@ModelAttribute("updatePh") Phone updatePh){ 


     articleService.updatePhone(updatePh); 
     return new ModelAndView("redirect:/articles/listusers.html"); 
    } 

Répondre

0

oui des cours, vous pouvez faire votre bouton pour soumettre les formulaires. Mais vous l'avez fait avec ajax.

-1

Vous pouvez faire astuce suivante comme lieu de bouton Sumbit ont seulement bouton normal

<input type="button" value="Update" onClick="submit2forms();"/> 

et clic de cet appel bouton ci-dessous méthode javascript comme

 <script language="javascript"> 
      function submit2forms() { 
       document.getElementById("form1").submit(); 
       document.getElementById("form2").submit(); 
      } 
     </script> 
+0

Je pense que ne fonctionnera pas. – jddsantaella

+0

J'ai essayé cette option et ne fonctionne que pour le premier soumettre le second jamais exécuté .. – user1331582

4

Vous pouvez avoir plusieurs formes dans une JSP, mais vous ne pouvez PAS envoyer les deux en même temps.

Vous devez mélanger les deux formulaires et les deux actions, récupérer toutes les informations dans l'action/le contrôleur et enregistrer les informations sur le téléphone et l'utilisateur. Une autre option serait d'utiliser Ajax pour envoyer un formulaire et envoyer l'autre comme d'habitude. Par ailleurs, votre problème n'a rien à voir avec Spring.

+0

si vous voulez envoyer les deux en même temps, il peut être plus facile de créer un formulaire qui inclut les informations des deux formulaires en cours. Sinon, utilisez 2 demandes et boutons différents – Thomas

0

Vous devez faire une boucle à travers les formulaires sur la page Web à l'aide document.forms [i] et à chaque forme individuellement appeler le soumettre

0

Votre seule option est fait pour ajax, vous devez comprendre que si vous méthode Controller rendra une page après le premier envoi de votre deuxième envoi par HTTP ne prendra jamais effet.

function submitForm(form, index){ 
     $.ajax({ 
     dataType: "json", 
     method: "POST", 
     url: "your controller url", 
     data:$('#form').serialize(), 
     success: function (data) { 
      if(index > 0){ 
       submitForm(form+=1, index--) 
      } 
     } 
    }); 

}

Questions connexes