framework7 多选框表单提交报错 java.lang.NumberFormatException: For input string: ““,自写原生js获取表单数据

发现bug 版本 7 1.6.4

1,后台数据结构:

//实体1
public class DefWorksheet extends DataEntity {   
   private FieldList fieldList = new FieldList();
}
//实体2
public class FieldList {
   private List field6List = Lists.newArrayList();
}

//后台controller 接收的是 DefWorksheet 

2,前台数据

  • 多选框:
      客户外出  其他
  •  

    3,framework7获取表单数据的方法

      var formData = app.form.convertToData('#workForm');

    4,看控制台错误的参数
    framework7 多选框表单提交报错 java.lang.NumberFormatException: For input string: ““,自写原生js获取表单数据_第1张图片

     

    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 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,正确的提交参数

    framework7 多选框表单提交报错 java.lang.NumberFormatException: For input string: ““,自写原生js获取表单数据_第2张图片

    问题解决,

    你可能感兴趣的:(Framework7,前台javaScript,jquery)