昨天在编码时遇到了一个问题,有一个表单里有String类型和List类型的数据需要显示和更新,使用form来实现。对于String类型还好,但是到获取List类型的数据时就获取不到了。最后在找了一天资料后,终于找到一个解决办法:在实体类中加一个属性,而这个属性的GETTER方法返回的是list的json格式StrIng数据,在前台的js中取这个属性就解决了。
实体类
public List<Evaluate> getEvaluateList() {
return evaluateList;
/*return JsonUtil.list2json(evaluateList);*/
}
public void setEvaluateList(List<Evaluate> evaluateList) {
this.evaluateList = evaluateList;
}
public String getEvaluateListStr() {
return JsonUtil.list2json(evaluateList);
}
public void setEvaluateListStr(String evaluateListStr) {
this.evaluateListStr = evaluateListStr;
}
前台
<script type="text/template" id="evaluateTpl">//<!--
<tr id="evaluateList{{idx}}">
<td>
<input id="evaluateList{{idx}}_caseid" name="evaluateList[{{idx}}].caseid" type="hidden" value="{{row.caseid}}" maxlength="768"/>
<input id="evaluateList{{idx}}_levelName" name="evaluateList[{{idx}}].levelName" type="hidden" value="{{row.levelName}}" maxlength="768"/>
<input id="evaluateList{{idx}}_levelTrueName" name="" readonly="true" value="{{row.levelTrueName}}" maxlength="768"/>
<input id="evaluateList{{idx}}_evaluate" class="easyui-combobox" name="evaluateList[{{idx}}].evaluate" style="width:200px"
data-options="required:true,valueField:'typeId', textField:'typeName',panelHeight:'auto'" value="{{row.evaluate}}" maxlength="768"/>
</td>
</tr>//-->
</script>
<script type="text/javascript">
var RowIdx = 0, evaluateTpl = $("#evaluateTpl").html().replace(/(\/\/\<!\-\-)|(\/\/\-\->)/g,"");
$(document).ready(function() {
var data = $<em><strong><span style="color:#ff0000;">{caseEntity.evaluateListStr}</span></strong></em>;
for (var i=0; i<data.length; i++){
addRow('#evaluateList', RowIdx, evaluateTpl, data[i]);
RowIdx = RowIdx + 1;
}
});
</script>
而且这样可以在表单提交时也能够提交list的数据:)