其实也一直觉得本身的实现方式容易出现实际提交失败,但页面显示是操作成功。因为我用ajax方法实现提交报价,根据Action类里返回的String message变量来判断录入成功或失败。message为null或空值时表示提交成功,否则失败。若成功,则把报价信息添加进jqGrid表。Action方法代码如下:
try {
System.out.println("开始新增报价………………");
quotationService.addQuotation(quotation); // 新增报价
System.out.println("新增报价成功");
} catch (Exception e) {
System.out.println(e.getMessage());
message = e.getMessage();
}
Ajax代码:
var param = $("#form3").serialize();
$.ajax({
url:"addOrModifyQuotation.action",
type:"post",
data:param,
dataType:"json",
success:function(data){
if(data.message==null||data.message==""){
var rowdata = {
QUOTATION_PN: $.trim($("#quotation_pn").val()),
PN_STATE: $.trim($("#pn_state").val()),
DELIVERY_QTY: $.trim($("#delivery_qty").val()),
MIN_DELQTY: $.trim($("#min_delqty").val()),
QTY_UNIT: $.trim($("#qty_unit").val()),
PRICE: $.trim($("#price").val()),
CURRENCY: $.trim($("#currency").val()),
DELIVERY_DAY: $.trim($("#delivery_day").val()),
QUOTATION_EXPDATE: $.trim($("#quotation_expdate").val()),
CERTIFY: data.quotation.certify,
QUO_NOTE: $.trim($("#quo_note").val()),
QUO_VALID: $.trim( $("#quo_valid").find("option:selected").text() )
}
var id = $("#gridTable").jqGrid('getGridParam','selrow');
$("#gridTable").setRowData(id,rowdata);
alert("提交成功!");
}
else{
alert("提交失败: " + data.message);
}
}
});
之前也碰到过多次,发生异常,但输出信息e.getMessage()居然为null,导致判断不准确。还是改为message = e.toString();比较准确。