想象一下,我的控制器中有这个场景:
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 :(得分:0)
可能 withFormat 在控制器中对你有用吗? giude
答案 1 :(得分:0)
您可以创建一个代表您的请求的对象,并将请求的内容放入其中。
class Multiplication
{
String nr_1
String nr_2
String result
}
它将使您render as XML
能够在您的操作中生成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.*
。