【问题标题】:Passing two values for one parameter inside RemoteFunction在 RemoteFunction 中为一个参数传递两个值
【发布时间】:2014-07-16 13:34:14
【问题描述】:

普惠制

<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv" 
           onchange="${remoteFunction(
           controller:'Pgtyp', 
           action:'ajaxGetMv', 
           params:'\'mv=\' + escape(this.value)+\'&date_hour=\'+z+\'&date_hour=\'+ b',
           //params:'\'mv=\'+this.value',
           onSuccess: 'printpgtyp(data)')}"
></g:select> 

控制器

def pgtyp = Pgtyp.executeQuery("select p.date_hour ,p.visits, p.mv, p.browser,p.pagetype,p.platform,p.device,p.time_period from Pgtyp p where p.mv = ? and p.date_hour >= ? and p.date_hour <= ?  order by col_0_0_ asc ",[params.mv, params.date_hour,params.date_hour])

这是我尝试为一个参数传递两个值的方法。我究竟做错了什么?如何让它发挥作用?

更新1

这是我得到的错误:

ERROR:Expected positional parameter count: 3, actual parameters: [SEO, [[Ljava.lang.String;@6e5980, [Ljava.lang.String;@6e5980]] [select p.date_hour ,p.visits, p.mv, p.browser,p.pagetype,p.platform,p.device,p.time_period from Pgtyp p where p.mv = ? and p.date_hour >= ? and p.date_hour <= ? order by col_0_0_ asc ]. Stacktrace follows:
Message: Expected positional parameter count: 3, actual parameters: [SEO, [[Ljava.lang.String;@6e5980, [Ljava.lang.String;@6e5980]] [select p.date_hour ,p.visits, p.mv, p.browser,p.pagetype,p.platform,p.device,p.time_period from Pgtyp p where p.mv = ? and p.date_hour >= ? and p.date_hour <= ? order by col_0_0_ asc ]
    Line | Method
->>   13 | doCall    in marchmock2.PgtypController$_closure1$$EOkBYvqz
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
|    200 | doFilter  in grails.plugin.cache.web.filter.PageFragmentCachingFilter
|     63 | doFilter  in grails.plugin.cache.web.filter.AbstractFilter
|   1145 | runWorker in java.util.concurrent.ThreadPoolExecutor
|    615 | run . . . in java.util.concurrent.ThreadPoolExecutor$Worker
^    744 | run       in java.lang.Thread

【问题讨论】:

    标签: ajax grails params


    【解决方案1】:

    您需要在控制器中使用params.list() 方法:

    def pgtyp = Pgtyp.executeQuery("select p.date_hour ,p.visits, p.mv, p.browser,p.pagetype,p.platform,p.device,p.time_period from Pgtyp p where p.mv = ? and p.date_hour >= ? and p.date_hour <= ?  order by col_0_0_ asc ", [ params.mv ] + params.list( 'date_hour' ).collect{ dateFormatter.parse( it ) } )
    

    【讨论】:

    • 啊抱歉,我取了另一个参数名
    • 查看更新。 dateFormatter 来自上一个问题。顺便说一句,在您的数据库中,date_hour 属于 date_time 类型,对吧?
    • 老兄,你太棒了。!!有效。!非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-18
    • 2013-02-20
    相关资源
    最近更新 更多