如何在grails中循环?

时间:2014-06-02 15:13:36

标签: grails if-statement

我是Grails的初学者,请帮忙。我的gsp中有这个

<div class="right66">                       
  <g:select class="time_pick" name="pick_day" placeholder="" from="${['Dani', 'Sati', 'Minute']}" valueMessagePrefix="book.category"/>
</div>

在翻译中:Dani = Days,Sati = Hours,Minute = Minutes。我需要在几分钟内保存数据,但用户可以选择输入是在几分钟,几小时还是几天。所以我必须做循环。我知道如果循环有效,但我不知道如何在Grails中编写它。我在想这样的事情:

n=1
if(params.type=Dani){
    n= 3600
}else if(params.type=Sati) {
    n=60
}
def minute=params.minute*n

但是如何称呼所选择的输入&#34; Dani&#34;?我不能写Params.type = Dani。在我的情况下,如果循环进入控制器吗?

2 个答案:

答案 0 :(得分:0)

控制器中的常规解决方案

你可以使用下面的循环,但是你什么时候结束循环要么你必须递减或增加n的值到一个结束值,如说1.upto(n)意味着1 ... 100,但每次我改变了它的价值,并且无限的地方......

List types = [] 
types = params?.type

def minute = 0;

1.upto(n) {
if(types[i]=='Dani'){
n=3600
}
else if(types[i]=='Sati') {
n=60
}
minute = params?.minute*n    
}

答案 1 :(得分:0)

如果您需要将输入转换为分钟,则应在控制器或服务中执行此操作。这里的if与Java或Groovy中的相同。视图中的输入将位于控制器中的params对象中,其名称与输入ID相同。

def minutes = params.input
if (params.pick_day in ['Sati', 'Dani']) {
    minutes *= 60
    if (params.pick_day == 'Dani') {
        minutes *= 24
    }
}