0

基本的なフィールドを持つオブジェクトフィールドがいくつかあるようなJavaオブジェクトがあります。例を次に示します。

Template {
    String name;
    EmailMessage defaultEmailMessage;
}
EmailMessage {
    String emailSubject;
    String emailBody;
}

gsonを使用してjson形式でテンプレートのリストを返すSpringControllerメソッドがあります。

私のjspでは、jquery ajax呼び出しを使用してこのリストを取得し、それに基づいていくつかのhtmlコンテンツを入力します。これは短縮バージョンです。

$.ajax({
    type : "GET",
    url : '<c:url value="/listTemplates.htm"/>',
    dataType: 'json',
    success : function(templates) {
    var map = $.map(templates, function(template) { 
        return { 
            "name": template.name,
            "emailSubject": template.defaultEmailMessage.emailSubject
    };});
        $("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(map));
    },
    error : function(data) {
        alert(data.responseText);
    }
});

Firebugでエラーundefined template.defaultEmailMessageが表示されますが、デバッグするときにとの両方を評価できtemplate.defaultEmailMessageますtemplate.defaultEmailMessage.emailSubject。使ってみ$.eachましたが同じ問題です。ネストされたjsonにアクセスするにはどうすればよいですか?ブラウザでjsonの完全な出力を確認したい場合は、お知らせください。

4

1 に答える 1

1

"emailSubject": template.defaultEmailMessage.emailSubjectに置き換えます "emailSubject": template.defaultEmailMessage

後で追加: なぜデータを再びjsonに変換したいのですか?データをjsonとしてリクエストし、コンパイルのためにjsonデータをテンプレートに返します。データをテンプレートに直接配置します。

$.ajax({
          type:"GET",
          url:"<c:url value="/listTemplates.htm"/>",
          datatype:"application/json",
          success:function(templates){      
                   $.get("Put Your Template URL HERE",function(template}
                   var result = _.template(template);                                $("#thumbnails-ul").html($("#campaignThumbTmpl").tmpl(templates));
        });
             }
    }); 

.eachこのようにして、以下のようにループを介してデータにアクセスすることにより、テンプレート内の任意の場所にデータを配置できます。

 <% _.each(data,function(anynamehere){ %>
        <li><a href="<%= anynamehere.name %>"></li>
    <% }); %>

上記はクラスから名前を出力するためのサンプルですが、他の.eachループを使用すると、他のプロパティも配置できます....これがお役に立てば幸いです...

于 2012-12-12T15:26:24.497 に答える