Spring MVC динамический список привязки конкретного значения становится пустым

У меня очень специфическая проблема. Я занимаюсь разработкой веб-приложения на Java и Spring MVC. У меня есть строка, которая может динамически дублироваться пользователем при нажатии кнопки. В каждом ряду около 10 полей. Я связываю эти строки как список объектов в базовом компоненте и инициализирую этот список как ленивый список в компоненте. Теперь он работал нормально до сих пор, но пользователь попытался ввести 12 строк и 12-ю строку, т. Е. 11-ю итерацию (итерация, начинающуюся с 0), 5-е поле становится пустым, хотя пользователь вводит значения и все другие поля сохраняют свои значения. Поскольку привязка происходит с именем, я проверил имя поля, оно согласуется с остальными полями в той же строке и остальными строками. Я не могу отладить и устранить проблему. Это влияет на код в производстве.

Я могу предоставить любые фрагменты кода, которые требуются.

Может кто-нибудь, пожалуйста, помогите мне с этим. Заранее спасибо.

РЕДАКТИРОВАТЬ: я попытался выполнить тот же код на другом сервере, и он работает там нормально, но все еще сохраняется на живом сервере. И проблема, кажется, только в 5-м поле 11-й итерации. Может ли быть проблема с сервером

Добавляем код:

JSP:

<c:forEach items="${addProposal.requirements}" var="req" varStatus="status">
<!--Rest of the fields-->
    <form:input path="requirements[${status.index}].sampleSize" id="r_sample${status.index}" value="${addProposal.requirements[status.index].maximumFeasibility}" class="inptform2" style="width:65px;" size="10" onchange="functions();"/>
<!--Rest of the fields-->
<td width="57" align="left" valign="middle" id="btn-close" class="btn-remove">' + 
    '<a href="javascript:void(0)"><img src="images/btncross.png" width="18" height="17" border="0" />' + 
    '</a>
</td>
</c:forEach>

Javascript:

$(document).ready(function(){

    //Add more dynamic rows
        $("#addMore").click(function() {    
             var tr_temp=$("#requirement tr:first").clone();
             //rest of the fields code
             tr_temp.find("#r_sample0").each(function() {
                 $(this).attr({
                        'id': function(_, id) { return 'r_sample' + i},
                        'name': function(_, name) { return 'requirements[' + i + '].sampleSize'},
                        'value': ''
                });
                }).end();
             tr_temp.find("td:last").remove();
             tr_temp.append(btn_close);
             tr_temp.appendTo("#requirement");
             i++;                       
        });

        //To remove a dynamically added row
        $("#btn-close").live('click',function(){
            doNotDel=false;
            count=0;

            //To fetch the values of the Input Fields
            $(this).parent().find("input").each(function(){
                count++;
                var value = $(this).val();
                var id=$(this).attr('id');              
                if(id.indexOf("r_total")==-1){
                    //Skip the minutes and currency column
                    if(id.indexOf("minutes")==-1 && id.indexOf("currencyValF")==-1 && id.indexOf("currencyVal")==-1){
                        if(value!=""){
                            doNotDel=true;
                            return false;       //breaks the .each loop
                        }                       
                    }
                }
            });

            if(doNotDel==false){
                $(this).parent().remove();  
            }               
        });
});

Боб:

private List<RequirementBean> requirements;

//in constructor
requirements = LazyList.decorate(
                new ArrayList<RequirementBean>()
                , new InstantiateFactory(RequirementBean.class));

контроллер:

@RequestMapping(value="/addProposal", method=RequestMethod.POST)
public String addProposal(@ModelAttribute("addProposal") ProposalBean proposal, ModelMap model){
    RequirementBean req;
    List<RequirementBean> reqmtList;

    System.out.println("Before empty rows");
    reqmtList = proposal.getRequirements();
    for(int i=0; i<reqmtList.size(); i++){
        req = reqmtList.get(i);
        if(req.getCountry()!=null){
            System.out.println("sample size " + i + " :" + req.getSampleSize());
        }
    }
}

РЕДАКТИРОВАТЬ: я попытался изменить значение 4-й строки в том же столбце, и теперь код, кажется, работает. Я до сих пор не могу понять, в чем проблема.

Надеюсь, что это дает больше ясности. Пожалуйста, помогите мне.

0 ответов

Другие вопросы по тегам