Forma de lista dinâmica dinâmica (expansível)

Estou tendo problemas com formulários dinâmicos na primavera. Em nosso formulário, queremos especificar um título e adicionar uma série de perguntas. Temos um botão "adicionar" para adicionar um formulário de entrada de perguntas usando jquery.

Nosso formulário possui um campo de pergunta quando solicitado. Campos extras são adicionados toda vez que o botão "adicionar" é pressionado. Ao enviar, parece que os campos extras não estão sendo enviados (o primeiro é recebido pelo controlador). Por que os campos extras não sãorecebid sendo enviado?

Baseei aproximadamente meu código emxemplo de lista dinâmica de ligações.

Meu modelo consiste em uma classe "Relatório" que possui um "título" e uma lista de "Questões de Pesquisa"
Uma versão curta das duas classes de modelo está abaixo. Roo cuida de todos os levantadores e levantadores

@Entity
@RooJavaBean
@RooEntity
public class Report{
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;

    @NotEmpty
    private String title;

    @OneToMany(mappedBy="report")
    private List<Researchquestion> researchquestions;
}



@Entity
@RooJavaBean
@RooEntity
public class Researchquestion {
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name = "id")
    private Long id;    
    @NotEmpty
    private String question;
}

Aqui o jspx para o formulário

<div xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:form="http://www.springframework.org/tags/form"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:fn="http://java.sun.com/jsp/jstl/functions"
    xmlns:spring="http://www.springframework.org/tags"
    version="2.0">
    <jsp:output omit-xml-declaration="yes"/>

    <spring:url value="/admin/report/appendquestion" var="insert_url"/>

    <script type="text/javascript">
    $(document).ready(function() {
        var questionPosition = 0;
        $("#addQuestionButton").click(function() {
            questionPosition++;

            $.get("${insert_url}", { fieldId: questionPosition},
                function(data){
                    $("#insertAbove").before($(data));
            });
        });
    });
    </script>

    <div class="list_overview_box span-19">
        <spring:url value="/admin/report/" var="form_url"/>
        <div class="list_overview_content">
            <table>
                <form:form action="${form_url}" method="post" modelAttribute="report">
                    <tr>
                        <th class="span-3">Veld</th>
                        <th>Waarde</th>
                        <th class="span-5">Errors</th>
                    </tr>

        <!-- Title -->
                    <tr class="row">
                        <td class="vmiddle aleft">Title</td>
                        <td><form:input path="title" /></td>
                        <td></td>                           
                    </tr>

           <!-- the "add" button -->
                    <tr class="row">
                        <td class="vmiddle aleft">Researchquestions</td>
                        <td colspan="2"><input type="button" id="addQuestionButton" value="Add question" /></td>
                    </tr>
           <!-- First Researchquestion -->
                    <spring:bind path="researchquestions[0].question">
                        <tr class="row">
                            <td class="vmiddle aleft">Question 1</td>
                            <td><form:input path="${status.expression}" /></td>
                            <td></td>                           
                        </tr>
                    </spring:bind>

        <!--  Save button, extra question's are added here -->
                    <tr id="insertAbove" class="row">
                        <spring:message code="button.save" var="form_submit"/>
                        <td colspan="3"><input id="proceed" type="submit" value="${form_submit}" /></td>
                    </tr>   
                </form:form> 
            </table>
        </div>
    </div>
</div>

Abaixo é a página que o controlador retorna após a solicitação jquery .get Eu tenho a ideia de que preciso usar<spring:bind> como no formulário acima. Quando faço isso, porém, recebo um erro:

java.lang.IllegalStateException: nem BindingResult nem objeto de destino simples para o nome do bean 'researchquestions [1]' disponível como atributo de solicitação

appendquestion.jspx

<jsp:root version="2.0"
    xmlns:jsp="http://java.sun.com/JSP/Page"
    xmlns:c="http://java.sun.com/jsp/jstl/core"
    xmlns:tiles="http://tiles.apache.org/tags-tiles"
    xmlns:form="http://www.springframework.org/tags/form"
    xmlns:spring="http://www.springframework.org/tags"
    xmlns:roo="urn:jsptagdir:/WEB-INF/tags" >

    <tr class="row">
        <jsp:directive.page contentType="text/html;charset=UTF-8" />   

        <td class="vmiddle aleft">Question ${questionNumber +1}</td>
        <td>
            <form:input path="report.researchquestions[${questionNumber}].question" size="40" />
        </td>
        <td></td>
    </tr>

</jsp:root>

Aqui estão os métodos @ModelAttribute e @requestmapping relevantes em nosso controlador O método @ModelAttribute garante que a List em uma instância de AutoPopulatingList, não tenho muita certeza se isso é necessári
Se eu adicionar@RequestParam Map formdata aocreate() (POST), os dados do formulário contêmresearchquestions[0].question mas nãoresearchquestions\[1\].question ou quaisquer outros campos de perguntas que foram adicionados depois de pressionar o botão "adicionar"

@ModelAttribute("report")
public Report getReport(Long id) {
    Report result;
    if(id != null){
        result = Report.findReport(id);
    } else{
        result = new Report();
    }

    //Make sure the List in result is an AutoPopulatingList
    List<Researchquestion> vragen = result.getResearchquestions();
    if(vragen == null){
        result.setResearchquestions(new AutoPopulatingList<Researchquestion>(Researchquestion.class));
    } else if(!(vragen instanceof AutoPopulatingList)){
        result.setResearchquestions(new AutoPopulatingList<Researchquestion>(
                vragen, Researchquestion.class));
    }

    return result;
}

/**
 * Aanmaken Report
 * @param report
 * @param result
 * @param modelMap
 * @return
 */
@RequestMapping(method = RequestMethod.POST)
public String create(@Valid @ModelAttribute("report") Report report,
        BindingResult result, ModelMap modelMap) {

    if (report == null) throw new InvalidBeanException("A report is required");

    if (result.hasErrors()) {
        modelMap.addAttribute("report", report);
        return "admin/report/create";
    }

    report.persist();

    //create questions
    for(Researchquestion question : report.getResearchquestions()){
        question.setProfielwerkstuk(report);
        question.persist();
    }

    report.merge();
    return "redirect:/admin/report";
}

@RequestMapping(value = "/appendquestion", method = RequestMethod.GET)
public String appendResearchquestionField(@RequestParam Integer fieldId, ModelMap modelMap){
    modelMap.addAttribute("questionNumber", fieldId);
    return "admin/report/appendquestion";
}

Informação adiciona (conforme solicitado por Ralph)

Abaixo o HTML que o Spring gera, queryquestions [0] .question está no formulário por padrão, searchquestions [1] .question é adicionado após pressionar o botão "add"

 <tr class="row">
    <td class="vmiddle aleft">Question 1</td>
    <td>
        <input id="researchquestions0.question" type="text" value=""
             name="researchquestions[0].question">
    </td>

    <td></td>
</tr>

<tr class="row">
    <td class="vmiddle aleft">Question 2</td>
    <td>
        <input id="researchquestions1.question" type="text" size="40" value="" name="researchquestions[1].question">
    </td>
    <td></td>
</tr>

Abaixo as informações relevantes dos Live HTTP Headers
I intered "Este é o título" no campo "title", "Esta é a primeira pergunta" no campo "Question 1" e "Esta é a segunda pergunta" no campo "Question 2" (que foi adicionado pressionando o botão "adicionar".

Fica claro que as perguntas de pesquisa [0] .question estão sendo enviadas, mas as perguntas de pesquisa [1] .question não são enviadas de maneira alguma na solicitação POST.

Content-Type: application/x-www-form-urlencoded
Content-Length: 73
   title=This+is+the+title&researchquestions%5B0%5D.question=This+is+the+first+question

Minhas suspeitas A diferença entre a primeira pergunta (que está no formato por padrão) e as perguntas subsequentes é que a primeira pergunta usa<spring:bind> e os subsequentes não. Quando eu removo o<spring:bind> para a primeira pergunta, as perguntas da pesquisa [0] também não são enviada

Como expliquei acima, recebo uma IllegalStateException ao adicionar o<spring:bind> para o appendquestion.jspx. Parece que a primavera procura o objetoresearchquestions[1] ao invés dereport.researchquestions[1]

java.lang.IllegalStateException: nem BindingResult nem objeto de destino simples para o nome do bean 'researchquestions [1]' disponível como atributo de solicitação

questionAnswers(1)

yourAnswerToTheQuestion