2011-02-10 2 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

그 doesnt는 작동하는 것처럼 보인다. 이 기능을 사용하려면 UploadTrackGroup 도메인 객체를 만들어야합니까? 이 내용이 hasMany 트랙 맵이 될까요? – GrahamB

+0

request.xml을 println하면 어떻게됩니까? 요소 3 개 모두를 보시겠습니까? 요소 이름은 인쇄되지 않지만 값은 거기에 있습니다. 또한 UploadTrackGroup에 도메인 객체가 필요하지 않습니다. – Steve

관련 문제