문제

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