gpt4 book ai didi

grails - Grails多选插件不起作用

转载 作者:行者123 更新时间:2023-12-02 15:27:55 27 4
gpt4 key购买 nike

我在使用g select标签编写的grails应用程序中有6个下拉列表,现在我需要在所有下拉列表中进行多个选择,但是我无法使用Grails multi select plugin 来实现

首先,我在Buildconfig.groovy中使用以下几行包含了插件-multiselect和资源:

compile ":multi-select:0.2"
runtime ":resources:1.2.2"

以下代码在我的“index.gsp”文件中

我之前带有基本单选的代码下拉列表:
<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv" 
onchange="${remoteFunction(
controller:'Com',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&department=\'+$(\'department\').value+\'&device=\'+$(\'device\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value+\'&time_period=\'+$(\'time_period\').value+\'&metric=\'+$(\'metric\').value',
onSuccess: 'printpgtyp(data)')}"
></g:select>

必须将其更改为如下所示:
尝试多选下拉菜单:
<ui:multiSelect from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" multiple="yes" name="mv" id = "mv" noSelection="['':'Select One']" 
onchange="${remoteFunction(
controller:'Com',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&department=\'+$(\'department\').value+\'&device=\'+$(\'device\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value+\'&time_period=\'+$(\'time_period\').value+\'&metric=\'+$(\'metric\').value',
onSuccess: 'printpgtyp(data)')}"
/>

另外,我在标签之外的index.gsp中添加了以下行(form标签包含我所有的g select标签-下拉列表)
<ui:resources includeJQuery="true"/> 

目前尚不清楚这是否为真/假,因为两种情况下的结果都相同。 Reference link

毕竟,我仍然获得与以前相同的下拉列表,并且还没有多个选择。我正在使用Grails-2.3.4
我在这里想念什么?我还应该添加/删除什么?遵循的步骤正确吗?

任何建议/反馈将不胜感激。

更新:

现在在index.gsp中使用它:
<g:select from="['AFFILIATES', 'CSE','DISPLAYADS','EMAIL','MOBILEWEB','OTHERS','ORGANIC','SEO', 'SEM']" name="mv" id = "mv" multiple="true"
onchange="${remoteFunction(
controller:'Com',
action:'ajaxGetMv',
// params:'\'mv=\' + escape(this.value)',
params:'\'mv=\'+this.value+\'&department=\'+$(\'department\').value+\'&device=\'+$(\'device\').value+\'&browser=\'+$(\'browser\').value+\'&platform=\'+$(\'platform\').value+\'&time_period=\'+$(\'time_period\').value+\'&metric=\'+$(\'metric\').value',
onSuccess: 'printpgtyp(data)')}"
></g:select>

Controller 就是这样
    def ajaxGetMv = {
if(params.metric == 'Marketing visits')
{
def com = Com.executeQuery("select p.date_hour, p.visits, case when visits_ly IN (0,null) THEN 0 ELSE ((visits/visits_ly - 1)*100) END as yoy, case when visits_lw IN (0,null) THEN 0 ELSE ((visits/visits_lw - 1)*100) END as wow, p.mv, p.browser, p.department, p.platform, p.device, p.time_period from Com p where p.department = ? and p.device = ? and p.browser = ? and p.platform = ? and p.mv = ? and p.time_period = ? order by col_0_0_ asc ",[params.department, params.device, params.browser, params.platform, params.mv, params.time_period])
render com as JSON
}
//.........else if and so on for all my metrics

因此,现在,索引和 Controller 仅针对一个值进行通信,如何在此处使它们针对多个选择进行通信?
我认为 Controller 必须在这里更改

最佳答案

Grails 2.x支持无插件的多重选择。以下是文档中的示例。多选用户界面不是最好的。

// create multiple select
<g:select name="cars"
from="${Car.list()}"
value="${person?.cars*.id}"
optionKey="id"
multiple="true" />

这是一个有关如何在 View 和 Controller 中访问多选复选框的示例:
   <g:each in="${Car.findAllByActive(true)}" var="car">
<div class="span4 checkbox">
<g:checkBox name="cars" value="${car.id}" checked="${car in instance?.cars}" />
<label>${car.name}</label>
</div>
</g:each>

params.cars.each { it ->
instance.cars.add(Car.findById(it as Long))
}

关于grails - Grails多选插件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24914873/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com