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には使用されていません。
@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を削除することです。徹底的に解決する方法はまだ見つけられません。