JQuery Dynamic Select Spring Bind

时间:2011-05-27 09:55:36

标签: jquery jsp spring-mvc

我有一个问题,我必须使用jquery动态生成下拉框并弹出绑定它们。我在表单支持对象中有一个列表,并尝试使用递增的计数器绑定它。

我收到了以下错误:

  

org.springframework.beans.InvalidPropertyException:bean类的无效属性'selectedPermntRestrictCat [+ categoryCounter +]'[com.portal.policymanagement.formObject.EditPolicyFormObject]:属性路径中的索引无效'selectedPermntRestrictCat [+ categoryCounter +]';嵌套异常是java.lang.NumberFormatException:对于输入字符串:“+ categoryCounter +”

$(document).ready(function(){
    var categoryCounter=0;
    $('#addCategory').click(function() {
        $('<div class="holder"><div class="left"><label> </label><form:select path="policy.selectedPermntRestrictCat[' + categoryCounter + ']"><form:option value="0" label="Select" /><form:option value="6" label="Entertainment" /><form:option value="7" label="Religion" /><form:option value="8" label="Weapons" /><form:option value="9" label="Virtual Community" /><form:option value="10" label="Hacking" /><form:option value="11" label="Search Engines" /><form:option value="12" label="Educational" /><form:option value="13" label="Other" /><form:option value="14" label="TEST NON_EXISTANT" /><form:option value="1" label="Violence" /><form:option value="2" label="Drugs" /><form:option value="3" label="Adult Content" /><form:option value="4" label="Online Resources" /><form:option value="5" label="Gambling" /></form:select></div><div class="right"><a id="'+i+'" class="but_default" href="#">Delete</a></div><div class="errors left"></div><div class="clear"></div></div>').fadeIn('slow').appendTo('.blockedCategories');
        categoryCounter++;
    });
});

1 个答案:

答案 0 :(得分:1)

这段代码毫无意义,因为您将服务器端逻辑(Spring标记)与客户端逻辑(jQuery)混合在一起。您看到的错误是由于作为服务器端标记的<form:select>在呈现页面期间在Javascript文字内执行的事实引起的。

要解决您的任务,您需要在正常页面呈现期间查看<form:select>生成的HTML,并使用您的jQuery代码创建类似的HTML,它将是这样的:

$('<div class="holder"><div class="left"><label> </label><select name="policy.selectedPermntRestrictCat[' + categoryCounter + ']"><option value="0" label="Select" />...</select>...').fadeIn('slow').appendTo('.blockedCategories');