So, I've this form in server side:

case class Employe(id: Int, name: String)
val myForm = Form(
  mapping(
    "id" -> number,
    "name" -> text
  ) (Employe.apply) (Employe.unapply)
)

So, in client side I need send three same forms to the server:

<html>
  <body>
    <div class="employe">
      <input type="number" class="employe_id"/>
      <input type="text" class="employe_name"/>
    </div>  
    <div class="employe">
      <input type="number" class="employe_id"/>
      <input type="text" class="employe_name"/>
    </div>  
    <div class="employe">
      <input type="number" class="employe_id"/>
      <input type="text" class="employe_name"/>
    </div>  
    <input type="button" id="send_button"/>
  </body>
</html>

and this data I send to the server via ajax with following code:

var allEmployes = $('.employe');
var addUrl = '/employes/add';
var employesArray = [];
for(var i = 0; i < allEmployes.length; i++) {
    var currentRow = $(allEmployes[i]);
    var emplId = currentRow.find('.employe_id').val();
    var emplName = currentRow.find('employe_name').val();
    var employe = {
        'id' : emplId,
        'name': emplName 
    };
    employesArray.push(employe);
}
$.post(addUrl, { 'employes': employesArray })
.done(function(response){
    console.log(response);
})
.fail(function(error){
    console.log(error);
});

but, I don't know how to get three same forms from request (in Action of Server side)? Anybody know how to can this?

Thanks in Advance!

有帮助吗?

解决方案

In controller change form mapping as

val myForm = Form( mapping( "id" -> list(number), "name" -> list(text) ) (Employe.apply) (Employe.unapply) )

and in html

<div class="employe">
  <input type="number" name="id[0]" />
  <input type="text" name="name[0]" />
</div>  
<div class="employe">
  <input type="number" name="id[1]" />
  <input type="text" name="name[1]" />
</div>  
<div class="employe">
  <input type="number" name="id[2]" />
  <input type="text" name="name[2]" />
</div>  
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top