Ajax Daten an Controller senden

Ich habe mich gefragt, was der Unterschied zwischen diesen beiden Syntaxen ist:

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: value
});

und

  var value = $("#myForm").serialize();
  $.ajax({
    type: "post",
    url: "testMethod",
    data: "valueName=" + value
});

Ich dachte, dass sie gleich sind, aber wenn ich die erste verwende, hat dieses Attribut in meinem Spring-Controller vollständig ausgefüllte Eigenschaften. Wenn ich den zweiten Ansatz verwende, sind alle Eigenschaften des Attributs null?

Hat jemand eine Erklärung dafür?

Das ist meinJSP:

<form:form id="myForm" action="*" modelAttribute="filters" >

    <form:input ...  path="age" />  
    <form:input ...  path="gender" />   
    <form:input ...  path="location" /> 

</form:form>

Das ist JS

$('#ok_provinces_btn_id').click(function(){
var second = $('#secondAttr').val();

var f = $("#myForm").serialize();

$.ajax({
    type: "post",
    url: "testMethod",
    data: ?????
});

});

Das ist meinRegler

    @RequestMapping(value="testMethod", method=RequestMethod.POST)
public void testMethod(
        @ModelAttribute("filters") FiltersWrapper filters,
                    @RquestParam String second
        ){

             //Here the **second** param is OK 
    filters.getAge(); //NULL
}

Antworten auf die Frage(1)

Ihre Antwort auf die Frage