在grails中的视图和控制器查询之间传递值

时间:2014-06-02 06:07:44

标签: javascript grails parameter-passing

我有一个带有sql查询的grails控制器(Tablev1classController.groovy),如下所示:

class Tablev1classController {

def dataSource

def listjson = {
def sql = new Sql(dataSource)
def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing,
                     organic, single_page_visits , total_units from tablev1 
                     where si_flag ='Serialized' ")
sql.close()
render rows as JSON
 }
 }

在观看中,我有一个如下所示的下拉列表:

<select id="si_flag" class="wrapper-dropdown">
<option value ="serialized">serialized</option>
<option value ="non-serialized">non-serialized</option>
</select>
var si_flag = document.getElementById('si_flag');

如何将存储在变量'si_flag'中的值作为参数传递给控制器​​中定义的查询(在where条件中)。

2 个答案:

答案 0 :(得分:0)

尼莎

首先,您必须确保将变量si_flag发布到控制器,因为我无法在您的代码中看到post或ajax调用。

然后,按如下方式重写您的查询:

def rows = sql.rows("""select date_hour, total_revenue as sales, visits, 
                       marketing,organic, single_page_visits , total_units 
                       from tablev1 
                       where"""+params?.si_flag""+""" ='Serialized' """)

然后一切正常!! 确保您的si_flag在发布到控制器时具有某些值。 你可以用

  

log.info(""Content of si_flag posted"+parmas.si_flag) or pritnln "Content of si_flag posted :$params.si_flag"

答案 1 :(得分:0)

您可以使用下面的参数

直接获取控制器中的表单值
class Tablev1classController {

def dataSource
def selected=params.si_flag

def listjson = {
def sql = new Sql(dataSource)
def rows = sql.rows("select date_hour, total_revenue as sales, visits, marketing,                   organic, single_page_visits , total_units from tablev1 where si_flag = '${selected}' ")
sql.close()
render rows as JSON
}
}