抱歉,是否有人在其他地方问过这个问题,但我环顾四周,找到了一些答案,但没有完整的例子,对此我仍然感到怀疑。
因此,我正在从Spring控制器向jsp添加一个自动填充列表,我想在javascript / jquery函数内的列表中添加项目。可能吗?
我尝试了下面的代码来测试该功能,但无法正常工作(列表元素在生成的html上完全没有显示)。所以我不确定我是否弄乱了javascrit / spring / jsp语法,或者这是否不可能。
这是代码:
控制器代码:
@RequestMapping(value="/create_custobject.html",method = RequestMethod.GET) public ModelAndView showCreateCustObjectPage() { Map<String, Object> model = new HashMap<String, Object>(); CreateObjectForm form = new CreateObjectForm(); model.put("createObjectform", form); return new ModelAndView("create_custobject", model) ; }
表单代码:
public class CreateObjectForm { private AutoPopulatingList<Criteria> ruleArray = new AutoPopulatingList<Criteria>(Criteria.class); public AutoPopulatingList<Criteria> getRuleArray() { return ruleArray; } public void setRuleArray(AutoPopulatingList<Criteria> ruleArray) { this.ruleArray = ruleArray; } public CreateObjectForm() {} }
条件代码:
public class Criteria{ String attribute; String operator; //... constructor + getters and setters }
javascript / jquery代码(与jsp在同一页面上):
<script type="text/javascript"> $(document).ready(function(){ //startup functionality var i = 0; document.getElementById("addCriteria").onclick = function() { $("#msgid").html("${ruleArray[i].attribute}"); ${ruleArray[i].attribute} = $('#attributeValue').val(); ${ruleArray[i].operator} = $('#operatorValue').val(); i++; } }
对于表单中的现有项目,请使用jstl作为
<c:forEach items="${form.items}" var="item" varStatus="status" > <span class="count" > <form:input path="items[${status.index}].field" />
这将呈现这样的形式
<form id = "idform" > <span class="count" > <input name="items[0].field" id="items0.field" /> </span> </form>
那么您只需使用javascript新形式添加带有核心索引的“行”
例如
var is = $('.count').size() $('#idform span:last').after('<span class="count" ><input name="items[' + is + '].field"' + is + '.field" /></span>')
我认为,如果您使用的是Spring 3 +,则无需使用AutopopulatingList,任何集合都足够了。