grails - 一个GSP中有多个<g:select>, Controller 内部的HQL中有多个参数

标签 grails gorm gsp params

GSP

<html>
<head>
<g:javascript src="jquery-1.10.2.min.js"/>
<g:javascript src="prototype.js"/>
</head>
<body>
<form>
<g:select from="['AFFILIATES', 'SEO', 'SEM','DISPLAYADS']" name="mv"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
            params:'\'mv=\' + escape(this.value)',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
</form>
<script>
function printpgtyp(data)
{
console.log(data);
}
</script>
</body>
</html>

CONTROLLER
package marchmock2
import grails.converters.*
import groovy.sql.Sql   


class PgtypController {



    def ajaxGetMv = {
        def pgtyp = Pgtyp.executeQuery("select p.visits,p.mv from Pgtyp p where p.mv = ?",[params.mv])
                //console.log(params.id)
        render pgtyp as JSON
    }

     def index() { 

}

} 

这个工作正常,现在我想添加以下类型的另一个:
<g:select from="['a', 'b', 'c','d']" name="mv"

并且, Controller 内部的HQL将更改为以下内容:
def pgtyp = Pgtyp.executeQuery("select p.visits,p.mv from Pgtyp p where p.mv = ? and p.br = ?",[params.mv],[params.br])

当任何一个下拉菜单更改时,我都需要相关输出。可以在Grails中完成吗?我仍在探索中,任何建议将不胜感激

更新
这是我在GSP中尝试过的方法:
<html>
<head>
<g:javascript src="jquery-1.10.2.min.js"/>
<g:javascript src="prototype.js"/>
</head>
<body>
    var a = document.getElemntByName(mv);
    <form>
<g:select from="['AFFILIATES', 'SEO', 'SEM','DISPLAYADS']" name="mv" class="mySelect"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
           // params:'\'mv=\' + escape(this.value)',
            params:'\'mv=\' + $(".mySelect").val()',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
<g:select from="['SAFARI', 'MOZILLA', 'OTHERS']" name="br" class="mySelect"
           onchange="${remoteFunction(
            controller:'Pgtyp', 
            action:'ajaxGetMv', 
           // params:'\'mv=\' + escape(this.value)',
            params:'\'br=\' + $(".mySelect").val()',
            onSuccess: 'printpgtyp(data)')}"
></g:select>
</form>
<script>
function printpgtyp(data)
{
console.log(data);
}
</script>
</body>
</html>

我将 Controller 更改为此:
package marchmock2
import grails.converters.*
import groovy.sql.Sql   


class PgtypController {



    def ajaxGetMv = {
        def pgtyp = Pgtyp.executeQuery("select p.visits,p.mv from Pgtyp p where p.mv = ? and p.browser = ?",[params.mv],[params.br])
                //console.log(params.id)
        render pgtyp as JSON
    }

     def index() { 

}

} 

但是,它引发了一个错误。
Uncaught TypeError: Cannot read property 'val' of null 

最佳答案

您可以使用&key=value分隔多个参数。考虑一下GET请求的URL参数。

请为选择框使用适当的类(mySelect1,mySelect2),以便您可以使用jQuery轻松访问它们。

params:'\'mv=\' + $(\'.mySelect1\').find(\':selected\').text() + \'&br=\' + $(\'.mySelect2\').find(\':selected\').text()',

关于grails - 一个GSP中有多个<g:select>, Controller 内部的HQL中有多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24605495/

相关文章:

grails - Grails重建整个项目

grails - 访问域对象属性时发生有关安全问题的Grails警告

jquery - 将 'id'插入具有外键(HQL)的字段中

Grails View (show.gsp) 不处理预期类的实例,而是获取 null

grails - 默认情况下如何使grails datePicker '0000-00-00 00:00:00'代替插入空白或null?

spring - Grails-Spring Security- session 设置

javascript - 如何从我的 Controller grails 调用 js 函数

unit-testing - 如何在Grails中为一个AresTo关系创建有效的参数用于单元测试?

css - 找不到我的资源

jquery - jQuery的提交无法在fancybox内工作