发现bug 版本 7 1.6.4
1,后台数据结构:
//实体1
public class DefWorksheet extends DataEntity<DefWorksheet> {
private FieldList fieldList = new FieldList();
}
//实体2
public class FieldList {
private List<String> field6List = Lists.newArrayList();
}
//后台controller 接收的是 DefWorksheet
2,前台数据
<li class="item-content item-input">
<div class="item-inner">
<div class="item-title item-label">多选框:</div>
<div class="item-input-wrap" id="wkst_field6">
<input type="checkbox" name="fieldList.field6List" value='sys_basic_ke_hu_wai_chu' >客户外出
<input type="checkbox" name="fieldList.field6List" value='sys_basic_qi_ta' >其他
</div>
</div>
</li>
3,framework7获取表单数据的方法
var formData = app.form.convertToData('#workForm');
4,看控制台错误的参数
framework7获取表单数据的方法 app.form.convertToData 把 field6List 加了个中括号,
造成实体转换失败报错: java.lang.NumberFormatException: For input string: ""
5,没办法自己写个原生js提交表单的方法吧
var formData = serializeForm('#workForm');
//原生js获取表单数据
function serializeForm(formId) {
var elements = getElements(formId);
var queryComponents = new Array();
for (var i = 0; i < elements.length; i++) {
var queryComponent = serializeElement(elements[i]);
if (queryComponent)
queryComponents.push(queryComponent);
}
return queryComponents.join('&');
}
//组合URL
function serializeElement(element) {
var method = element.tagName.toLowerCase();
var parameter = input(element);
if (parameter) {
var key = encodeURIComponent(parameter[0]);
if (key.length == 0) return;
if (parameter[1].constructor != Array)
parameter[1] = [parameter[1]];
var values = parameter[1];
var results = [];
for (var i=0; i<values.length; i++) {
results.push(key + '=' + encodeURIComponent(values[i]));
}
return results.join('&');
}
}
//获取指定form中的所有的<input> select 和 textarea 对象
function getElements(formId) {
var form = document.getElementById(formId);
var elements = new Array();
var tagElements = form.getElementsByTagName('input');
for (var j = 0; j < tagElements.length; j++){
elements.push(tagElements[j]);
}
var selectTagElements = form.getElementsByTagName('select');
for (var i = 0; i < selectTagElements.length; i++){
elements.push(selectTagElements[i]);
}
var textareaTagElements = form.getElementsByTagName('textarea');
for (var i = 0; i < textareaTagElements.length; i++){
elements.push(textareaTagElements[i]);
}
return elements;
}
function input(element) {
switch (element.type.toLowerCase()) {
case 'submit':
case 'hidden':
case 'password':
case 'text':
case 'textarea':
return [element.name, element.value];
case 'select-one':
return inputSelect(element);
case 'checkbox':
case 'radio':
return inputSelector(element);
}
return false;
}
//获取单个input中的【name,value】数组
function inputSelector(element) {
if (element.checked)
return [element.name, element.value];
}
function inputSelect(element){
var index=element.selectedIndex;
if(index!=-1){
var value=element.options[index].value;
return [element.name, value];
}
}
6,正确的提交参数
问题解决,