2011-11-09 15 views
0

私は私のコントローラでこのシナリオを持っている想像:Grailsの休憩XMLレンダリング

def nr_1 = params.first_nr 
def nr_2 = params.second_nr 
def result 
def erro = 'no' 

if(nr_1.isInteger() && nr_2.isInteger()) 
    result = nr_1.toInteger() * nr_2.toInteger() 
else 
    erro = 'yes' 

if(erro.equals('yes')) 
    [sms : 'Please introduce only 2 numbers!'] 
else 
    [sms: 'The result of the multiplication of ' + nr_1 + ' with ' + nr_2 + ' is ' + result] 

これは私のGSPビューに戻され、それが正常に行われています。今私はこれをRESTアクセスWebサービスに変換したいと思います。

<firstNumber>nr_1</firstNumber> 
<secondNumber>nr_1</secondNumber> 
<result>result</result> 

、その後、残りの要求に戻る:道イムはこれを見て、私は手動でこのようなタグを作成する必要があります。これをどのように達成できますか(HTMLとXMLの両方の応答を提供し、XMLでは最後のXMLタグのみを解析します)。

答えて

0

リクエストを表すオブジェクトを作成して、リクエストの内容をその中に入れることができます。

class Multiplication 
{ 
    String nr_1 
    String nr_2 
    String result 
} 

それはあなたのアクションであなたのXMLを生成するために、私たちrender as XMLすることができるようになります:

def multiplication = new Multiplication(nr_1: params.first_nr, 
             nr_2: params.second_nr) 
def error = 'no' 
    if (multiplication.nr_1.isInteger() && multiplication.nr_2.isInteger()) 
    multiplication['result'] = multiplication.nr_1.toInteger() * multiplication.nr_2.toInteger() 
    else 
    error = 'yes' 

if (error == 'yes') 
{ 
    [sms: 'Please introduce only 2 numbers!'] 
} 
withFormat { 
    html sms: "The result of the multiplication of $multiplication.nr_1 with $multiplication.nr_2 is $multiplication.result" 
    xml { render multiplication as XML } 
} 

は、コントローラの先頭にimport grails.converters.*することを忘れないでください。

0

とすると、コントローラのフォーマットはお役に立ちますか? giude

+0

はい、その部分はわかります。しかし、どのように私はxmlの部分を行うのですか? – recoInrelax