-2

(で)HTMLService使用してからデータを渡す必要がありますJSONJS/JQUERY

このサービスでは、別のオブジェクトとさらに2つのフィールドを含むオブジェクトを受信するサービス呼び出しがあります。

ロールオブジェクト:

import java.io.Serializable;

public class Role implements Serializable {           
    private long id;
    private String name;    
}

ユーザーオブジェクト:

import java.io.Serializable;

public class User implements Serializable {           
    private String userName;
    private String password;    
    private ArrayList<Role> roles;
}

今まで、私はそれをJSON好きなように他のサービスにデータを渡すことができました:( 2つのパラメーターのみを含むデータ:idとuserName)

xmlHttp.open("POST", "http://www.foo.com/serviceFunction2", true);
xmlHttp.send('{"Id": "123", "userName": "test"}');

だから、私の質問は、 Roleオブジェクトを 含むUserオブジェクトをどのように使用して埋めることができるかということです。私がこの行でそれを送ることができたように:JS/JQUERY

xmlHttp.send('{"Id": "123", "userName": "test"}');

ありがとう

4

2 に答える 2

1

JSでオブジェクトを「ネスト」する方法はいくつかありますが、おそらく最も簡単なのは、オブジェクトや配列リテラルをネストすることです。「ロール」が配列であると想定される場合、次のようになります。

'{"userName":"test", "password":"secret", "roles":["role1","role2","role3"]}'

配列内の各役割自体がプロパティを持つオブジェクトである場合:

{
   "userName":"test",
   "password":"secret",
   "roles": [
       { "roleName":"role1", "prop2":"someValue", "prop3":"whatever" },
       { "roleName":"role2", "prop2":"someValue", "prop3":"whatever" },
       { "roleName":"role3", "prop2":"someValue", "prop3":"whatever" }
   ]
}

(読みやすくするために改行が追加されていますが、文字列を作成する場合は改行します。)

于 2012-06-06T21:17:35.207 に答える
0

あなたの目標が何であるかはわかりませんが、HTMLページをGUIとして使用し、Javaを処理に使用している場合は、などを使用することをお勧めします。など、多くのものを処理する複数のフレームワークがあります。

興味のある方は、Primefacesのショーケースをご覧ください。

MattBallが提案したように、 のようなものも使用できるので、これはあなたの手から多くの負荷を取り除きます。

あなたはたくさんの強力で簡単なものを使うことができます。

アノテーションを使用して、オブジェクトをJSON/XMLにマップできます。

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class Role
{
    @XmlAttribute
    private long id;
    @XmlAttribute
    private String name;    
}

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
public class User
{
    @XmlAttribute
    private String userName;
    @XmlAttribute
    private String password;
    @XmlElement    
    private ArrayList<Role> roles;
}

その後、これをWebサービスで使用できます。

@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("user/{username}")
public User getUser( @PathParam("username") String userName)
{
    User user;
    // Get your user
    return user;
}
于 2012-06-06T21:54:06.087 に答える