سؤال

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