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

发现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">&nbsp;
 <input   type="checkbox"  name="fieldList.field6List" value='sys_basic_ke_hu_wai_chu' >客户外出&nbsp;
 <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,正确的提交参数

问题解决,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值