我有一个带有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条件中)。
答案 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
}
}