小编典典

使用来自javascript的索引获取弹簧模型属性列表元素

java

抱歉,是否有人在其他地方问过这个问题,但我环顾四周,找到了一些答案,但没有完整的例子,对此我仍然感到怀疑。

因此,我正在从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++;

      }
   }

阅读 227

收藏
2020-11-26

共1个答案

小编典典

对于表单中的现有项目,请使用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,任何集合都足够了。

2020-11-26