2011-02-10 9 views
0

私はすぐにドメインクラスをREST POSTで作成することに成功しましたが、同じタイプの複数のオブジェクトを持つXMLファイルの複数の作成方法を詰め込んでいます。REST POSTは一度に複数のドメインオブジェクトを作成しますか?

<Track> 
     <trackAlbumName> Songs for Polar Bears </trackAlbumName> 
     <trackArtistName> Snow PAtrol </trackArtistName> 
     <trackSongTitle> First Song </trackSongTitle> 
</Track> 

私はUploadTrackGroupドメインクラスを追加し、そして今、同じアップロードで、私はのようなものを投稿する期待していた例を複数のトラックオブジェクトを作成したいしています。

<?xml version="1.0" encoding="utf-8"?> 

<UploadTrackGroup> 

    <Track> 
     <trackAlbumName> Songs for Polar Bears </trackAlbumName> 
     <trackArtistName> Snow PAtrol </trackArtistName> 
     <trackSongTitle> First Song </trackSongTitle> 
    </Track> 

    <Track> 
     <trackAlbumName> Different Class </trackAlbumName> 
     <trackArtistName> Pulp </trackArtistName> 
     <trackSongTitle> Misshapes </trackSongTitle> 
    </Track> 

    <Track> 
     <trackAlbumName> F Sharp A Sharp </trackAlbumName> 
     <trackArtistName> Godspeed You Black Emperor </trackArtistName> 
     <trackSongTitle> Dead Flag BLues</trackSongTitle> 
    </Track> 

</UploadTrackGroup> 

しかし、私はそれが動作するようになることができれば私は気になるでしょう。

コントローラで次のコードを使用しようとすると、

println params 

params.UploadTrackGroup.each { 
    println "-->" + it 
} 

私は、単一のトラックを参照して、例えば

[action:create, controller:recognisedSong, UploadTrackGroup:[Track: F Sharp A Sharp Godspeed You Black Emperor Dead Flag BLues]] 

-->Track= F Sharp A Sharp Godspeed You Black Emperor Dead Flag BLues 
+0

どこに問題がありますか?クライアントで?サーバー上で?どこに。詳細... – hvgotcodes

答えて

0

は私が効果的に親UploadTrackGroupノードを無視して何を望むか達成に成功した、と単純に

request.XML.Track.each { 
        println it.trackAlbumName.text() + " " + it.trackArtistName.text() 
       } 

を使用してそれは、すぐに私はトラック・ノードへの正確な修飾パスを指定しようとするように思われます、すなわちUploadTrackGroup.Track.eachまたはそれらの様々なバリエーションは、それは動作しません。

です。

0

はこれを試してみてください:

def xml = request.XML 
int tracksSize = xml.UploadTrackGroup[0].Track.size() 
if (trackSize > 0) { 
    def trackGroupXml = xml.UploadTrackGroup[0] 
    for (int i = 0; i < tracksSize; ++i) { 
    def albumName= x.Track[i].trackAlbumName.text() 
    //Get other props out of XML, create domain object 
    } 
} 

また、 "RestController" を使用して、コントローラに名前を付けることができます。 this about controllersを参照してください。

+0

それは動作しないようです。これを行うにはUploadTrackGroupドメインオブジェクトを作成する必要がありますか?これはhasManyトラックマップの内容ですか? – GrahamB

+0

request.xmlをprintlnするとどうなりますか?あなたの要素の3つすべてが見えますか? (要素名は印刷されませんが、値はそこにあります)また、UploadTrackGroupのドメインオブジェクトは必要ありません。 – Steve

関連する問題