SpringMVC@ResponseBodyを使用すると、Jsonの日付フォーマットと発生する可能性がある問題に戻ります。
8981 ワード
http://blog.csdn.net/z69183787/article/details/40375831
遭遇した問題:
1条件:
1.1、フォームには二つの時間パラメータがあります。隠し項目としてフォームと一緒に提出します。
<input name=「createTime」id=「createTime」type=「hidden」/>
1.2、フォームに対応するモデルクラスUserでは、createTimeに時間フォーマット変換を使用しており、lastTimeには使用されていません。
3問題を調査し、
3.1下記のフォーム項目のような形でフォームを提出することができます。
jquery.easyui.min.jsのフォーム提出関数を使っています。form。
エラーメッセージの大体の意味は、jsが組織requestでエラーが発生しましたので、バックグラウンドプログラムを起動することはできません。
解決の方法はフォームの日付タイプのinputを削除することです。徹底的に解決する方法はまだ見つけられません。
遭遇した問題:
1条件:
1.1、フォームには二つの時間パラメータがあります。隠し項目としてフォームと一緒に提出します。
<input name=「createTime」id=「createTime」type=「hidden」/>
1.2、フォームに対応するモデルクラスUserでは、createTimeに時間フォーマット変換を使用しており、lastTimeには使用されていません。
@JsonSerialize(using = CustomDateSerializer.class)
public Date getCreateTime() {
return createTime;
}
public Date getLastTime() {
return lastTime;
}
2問題が発生しました。jQueryを使ってフォームを提出する場合、バックグラウンドcontrollerに提出できません。$(function() {
$("#form").form({
url :"${pageContext.request.contextPath}/systemManage/saveUser",
onSubmit : function() {
parent.$.messager.progress({
title : ' ',
text : ' , ....'
});
var isValid = $(this).form('validate');
if (!isValid) {
parent.$.messager.progress('close');
}
return isValid;
},
success : function(result) {
parent.$.messager.progress('close');
result = $.parseJSON(result);
if (result.status) {
parent.reload;
parent.$.modalDialog.openner.datagrid('reload');
parent.$.modalDialog.handler.dialog('close');
parent.$.messager.show({
title : result.title,
msg : result.message,
timeout : 1000 * 2
});
}else{
parent.$.messager.show({
title : result.title,
msg : result.message,
timeout : 1000 * 2
});
}
}
});
});
system Manage/saveUser対応のcontrollerメソッドでは、ブレークポイントが入ることができません。すなわち、controllerメソッドをトリガすることができません。しかし、奇妙なことに、私のインテグレータを組み込んでいます。その後、jsはsuccessの分岐に入ります。3問題を調査し、
3.1下記のフォーム項目のような形でフォームを提出することができます。
<input name="createTime" id="createTime" type="hidden" value="2016-06-21 17:24:19">
<input name="lastTime" id="lastTime" type="hidden" value="">
3.2下記のフォームのような形では提出できません。<input name="createTime" id="createTime" type="hidden" value="2016-06-21 17:24:19">
<input name="lastTime" id="lastTime" type="hidden" value="14363774849">
3.3 lastTimeの提出による問題であると疑われ、getLastTimeに時間フォーマットを加えて問題解決を試みる。理由がはっきりしない@JsonSerialize(using = CustomDateSerializer.class)
public Date getLastTime() {
return lastTime;
}
3.4後記、日付タイプのinputをすべて@Json Serializeで日付フォーマットを変更した後、フォームは完全に提出できなくなりました。3.1で説明した現象も再現できません。jquery.easyui.min.jsのフォーム提出関数を使っています。form。
<script type="text/javascript">
$(function() {
$("#form").form({
url : "${pageContext.request.contextPath}/systemManage/saveUser",
onSubmit : function() {
parent.$.messager.progress({
title : ' ',
text : ' , ....'
});
var isValid = $(this).form('validate');
if (!isValid) {
parent.$.messager.progress('close');
}
return isValid;
},
success : function(result) {
parent.$.messager.progress('close');
result = $.parseJSON(result);
if (result.status) {
parent.reload;
parent.$.modalDialog.openner.datagrid('reload');
parent.$.modalDialog.handler.dialog('close');
parent.$.messager.show({
title : result.title,
msg : result.message,
timeout : 1000 * 2
});
} else {
parent.$.messager.show({
title : result.title,
msg : result.message,
timeout : 1000 * 2
});
}
}
});
});
</script>
フォームが提出できないという具体的な表現は、ワンストップが実行された後、url指定のバックグラウンドプログラムをトリガできなくなり、プログラムは直接にsuccess分岐に入り、もしresuultパラメータを印刷したら、400のエラーインターフェースです。エラーメッセージの大体の意味は、jsが組織requestでエラーが発生しましたので、バックグラウンドプログラムを起動することはできません。
解決の方法はフォームの日付タイプのinputを削除することです。徹底的に解決する方法はまだ見つけられません。