0

DOJO 1.8 iand spring mvc を使用しています。フォーム フィールドを JSON オブジェクトに変換し、コントローラーに渡したいと考えています。DOJO dom-form.toObject("myForm1") を使用すると、単純なオブジェクトの場合、Json をコントローラーに渡すことができます。

モデル オブジェクトに内部オブジェクトがある場合、.toObject() はそれをネストされた JSON オブジェクトに変換できません。

var formObject1 = domForm.toObject("myForm1");
    alert("hi");
    require(["dojo/json"], function(JSON){
        postData = JSON.stringify(formObject1);
    });

    dojo.byId("testdiv").innerHTML = postData;

そして私が得ているJsonは

{"firstName":"12345","middleName":"Joanna","lastName":"Eliza","address.addrLine1":"add1","address.addrLine2":"add2","address.addrLine3" :"add3","メール":"12345"}

しかし、私は以下のように必要です、

{"firstName":"12345","middleName":"Joanna","lastName":"Eliza", "address":{"addrLine1":"add1","addrLine2":"add2","addrLine3": "add3"} ,"メール":"12345"}

DOJO はこのタイプの JSON 変換をサポートしていますか?

4

2 に答える 2

0

仕事をする短い関数:

// lang = require("dojo/_base/lang");
function deepenObject(/*Object*/ object) {    
    object = lang.clone(object);
    for(var key in object) {
        if(object.hasOwnProperty(key) && ~key.indexOf(".")) {
            lang.setObject(key, object[key], object);
            delete object[key];
        }       
    }
    return object;
}

それからちょうど:

var result = deepenObject(formObject1);

実際に見てみましょう: http://jsfiddle.net/phusick/gaJ8C/

于 2012-11-25T12:05:56.777 に答える
0

Dojo には、この種のタスクのためのさまざまな方法があります。ドキュメントを見て、適切なソリューションを選択してください。

于 2012-11-23T07:11:06.110 に答える