easyui 文件上传,及结合springMVC 后台int参数的注意事项
1. 如果springMVC后台接收的参数为int则(如ID或序列等等参数),必须要有值,否则springMVC会报类转换失败的异常(规避办法是前台隐藏传int参数的值或后台不要用int参数,可通过String转换为int),其原因是所有参数在request或respose都是字符串类型的,空字符串(NULL)转成int当然会报类型转换异常的!
2. 带有文件上传的表单不能通过简单的$('#addForm').form('clear'); 和var r = $('#addForm').form('validate');的方法来清除和验证表单,否则easyui 会报TypeError: _3b4 is undefined 的异常(如果你不主动捕获是不会报的)
eg:
//新增
function addrow(){
try {
$('#addForm').form('clear');//参数中有默认值不能clear,springMVC int参数必须传入(springMVC 类型转换或报异常)
} catch (e) {
alert(e);
}
$('#geshouName').val('');
$('#geshouId').val('0');
showWin();
}
function addOrUpdate(){
alert(2);
try {
var r = $('#addForm').form('validate');
alert(r);
if(!r) {
alert(false);
return false;
}
} catch (e) {
alert(e);
}
$('#addForm').form('submit', {
url:'add.do',
onSubmit: function(){
alert('');
// do some check
// return false to prevent submit;
},
success: function(data){
var data = eval('(' + data + ')');
// change the JSON string to javascript object
if (data && data.success == "true") {
$('#addWind').window('close');
$('#gridTable').datagrid('reload');
$.messager.alert('提示','添加成功','info');
} else
$.messager.alert('错误提示','服务器繁忙,请稍候重试!','error');
}
});
From HTML
<form id="addForm" method="post" enctype="multipart/form-data" action="add.do" >
<input type="hidden" id="geshouId" name="geShouId" value="0"/>
<table align="center" style="margin: 10px;">
<tr>
<td>歌曲名字:</td>
<td><input class="easyui-validatebox" data-options="required:true" type="text" name=mediaName id="geshouName"></input></td>
<td rowspan="6">
<img alt="" src="http://www.baidu.com/img/baidu_jgylogo3.gif">
</td>
</tr>
<tr>
<td>FTP文件名:</td>
<td><input class="easyui-validatebox" data-options="required:true" type="text" ></input></td>
</tr>
<tr>
<td>歌曲类型:</td>
<td><select> </select></td>
</tr>
<tr>
<td>歌手:</td>
<td><input class="easyui-combobox" id="language"
data-options="url:'http://localhost:8080/zhepg/manage/klok/geshou/listAll.do',valueField:'id',textField:'text'"></td>
</tr>
<tr>
<td>合唱歌手名:</td>
<td><input type="text" name="geShouName2" ></input></td>
</tr>
<tr >
<td>歌曲封面:</td>
<td><input type="file" class="easyui-validatebox" name="photoFile" ></input></td>
</tr>
<tr height="30" >
<td colspan="2" align="center">
<a href="javascript:void(0);" id="btn-back" οnclick="$('#addWind').window('close');" class="easyui-linkbutton" iconCls="icon-back">返回</a>
<a href="javascript:void(0);" id="btn-add" οnclick="addOrUpdate();" class="easyui-linkbutton" iconCls="icon-save">保存</a>
</td>
</tr>
</table>
</form>
这时不管你是初始化表单还是提交表单都会出现奇怪的现现象,debug下是看不到任何异常信息,如果你像我上面js里面去try 和catch异常会发现,原来已经报错了。具体为什么会导致这样,没有细查,我们要规避这一问题就是有文件的表表单如果需要验证就只能手工一个个去验证不能直接