struts2形式绑定参数到集合而不使用索引
Struts 2 Form Bind Parameters To Collection Without Using Index
Struts版本:2.3.16.3
是否有一种方法可以填充对象列表而不必指定索引?目前,我必须像这样引用集合:
<input name="myCollection[0].myProperty" value="some value" />
我真的很想做这样的事情:
<input name="myCollection[].myProperty" value="some value" />
我正在用JavaScript动态地添加和删除页面上的元素,并且使用JavaScript获得正确的索引是一种痛苦。而是让后端按照元素从表单中出现的顺序添加到集合的末尾。与PHP的处理方式类似。
参数拦截器的文档说它实际上只是一个输入名称绑定到的ognl表达式。我去了ognl文档里面说你可以这样引用数组
array["length"]
,即数组中的下一个元素。参数拦截器发出拒绝此参数名称的消息。我真的很想找到一种方法来实现这一点,即使这意味着扩展参数拦截器。
既然
- 你正在用Javascript操作页面
- 你在添加/删除元素时检测/更新元素索引有问题
最简单的解决方案是:
- 在操作它们时使用您喜欢的语法,例如
myCollection[].myProperty
和 - 将它们转换成Struts 在预提交函数中所需的形式。
这样在操作元素的时候就不需要担心索引了,只需要一次,在最后,你可以简单地通过名称或其他方式循环它们,并通过分配正确的索引来使用javascript更改它们的名称。
jQuery的启动示例:
$(function() {
$('#myform').submit(function() {
$('[name^="myCollection[]"]').each(function(index) {
var oldV = this.name;
var newV = oldV.replace("myCollection[]", "myCollection[" + index + "]");
console.log("was: " + oldV + " - now is: " + newV);
this.name = newV;
});
return false;
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="myform">
Open Javascript Console, then press submit, then inspect input elements
<br>
<input name="myCollection[].myProperty" />
<br>
<input name="myCollection[].myProperty" />
<br>
<input name="myCollection[].myProperty" />
<br>
<input name="myCollection[].myProperty" />
<br>
<input name="myCollection[].myProperty" />
<br>
<button>submit</button>
</form>
您需要以某种方式确定某个属性属于哪个对象。索引是最简单的方法,所以不能直接删除它们。
有很多方法可以达到你想要的。看看Andrea对使用javascript的一种可能解决方案的回答。您还可以将对象属性拉到简单列表中,然后将它们设置为对象。
。
private List<String> myProperty;
可以在没有索引的JSP中引用:
<input name="myProperty" value="first value" />
<input name="myProperty" value="second value" />
当然,如果你有许多属性,你需要在JSP中以某种方式同步它们,以使列表中属性的顺序和大小与每个属性保持一致。
相关文章:
- 名称输入的索引
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 在jQuery中获取表的行索引
- 测试索引值是否等于某个数字的倍数
- 使用它更新集合中的嵌套数组's索引
- 引用Javascript中的索引集合
- 主干-在对集合进行迭代时将索引传递到视图中
- React:使用索引变量更新嵌套集合
- BackboneJS重新排列集合中模型的最佳方式,同时为每个模型维护0索引的有序属性
- 在 Meteor 中获取集合索引的列表
- 使用猫鼬查询 mongo 中集合的命名文本索引
- 正在将模型添加到具有索引的集合中
- JQuery集合<选择>属性值的索引
- 如何通过fetch获取添加到Backbone集合的项目的索引
- jQuery将子项插入到集合索引处的元素中
- 获取基于行索引数组的jQuery行集合
- struts2形式绑定参数到集合而不使用索引
- MongoDb -按列选择集合和索引
- 索引页排序集合的附加参数
- 在从Backbone集合中过滤模型时维护索引