2014-07-02 49 views
0

我正在为大型数据集构建Grails应用程序,并面临由于在应用程序的JavaScript端(客户端)加载大型json文件而导致的各种问题,因此导致浏览器崩溃。现在将相关数据加载到浏览器中用于Grails应用程序

,我已经意识到我正在上只有JavaScript端的所有用户的选择,但我假设它可以在Grails的控制器端进行,也使用标签和“PARAMS”

我要找在:

http://grails.org/doc/latest/ref/Tags/link.html 
http://grails.org/doc/latest/ref/Tags/form.html 

但是,我很新,这需要一些方向,如果我想要做的是可行的或不是? 基本上,我希望用户选择一堆下拉列表,其值被传递给我的grails控制器,并且控制器将过滤的数据发送到JavaScript加载,这样只有相关数据被发送到浏览器,并且它正常运行。

UPDATE

package marchmock2 
class Tablev1class { 
Date date_hour 
String mv 
String pagetype 
Integer visits 
Integer visits_ly 
Integer visits_lw 
String time_period 
String platform 
String device 
String browser 


static mapping = { 
table "pgtyp" 
version false   
date_hour column: "date_hour" 
mv column: "mv" 
pagetype column: "pagetype" 
visits column: "visits" 
visits_ly column:"visits_ly" 
visits_lw column:"visits_lw" 
time_period column:"time_period" 
platform column:"platform" 
device column:"device" 
browser column:"browser" 
} 
static constraints = { 
} 
} 

这是我的领域类的样子,也没有依赖性。我想要的是创建从各种MV,页面类型,平台,设备,浏览器的选择,并作出选择传递给控制器​​,该控制器有一个查询到数据库

+0

创建g:选择列出相同表集合optionValue的元素为不同对象Ie第一selwct optionValue mv第二pagetype等等。如果你需要它来计算用户选择的东西,然后看看onchange和一个远程调用xall控制器来处理选定的元素 – Vahid

回答

0

我想你可能需要编辑问题并重新定义您在上一节中的要求。

你可以到这里看看:

I want my selects dropdowns to auto populate with Ajax in Grails website

在这个问题上我有点分手你怎么能使用远程调用从一个现场收集的数据来生成下一个选择?是需求的这一部分还是这些所有单独选择都不相互依赖?

如果依赖关系选择然后采取在ajaxdependancyselection插件,其中正确的嵌套选择可以是achieved.If选择是从大型数据集的话,说不定就主要问题的建议很可能会更快.....

UPDATE 因为它们是独立的,你可以加载了

<g:select name="input1" from="${domainClass1.list()}" ...> 

每个domainClass通话 发布回控制器

在你的控制器

def d1=domainClass1.get(params.input1) 
def d2=domainClass2.get(params.input2) 

render (view: 'something', model: [ d1: d1, d2:d2 ]) 

等 那么你可以扩大各自通过domainClass对象,并得到具体的相关元素满分各为D1 D2等....

我真的不确定客观所以道歉,如果这不是你要找的

更新来更新

不确定为什么你需要有选择每个对象的s,也许正如你所说,你想然后做一些与价值观.. 在这种情况下,看看最后一个例子的option键和optionValue都设置到设备,以便它会显示在选择和用户选择设备最终会被实际的设备选择

<g:select id="mv" name="mvid" from="${marchmock2.Tablev1class.list()}" optionKey="id" optionKey="mv" required="" value="${params?.mvid}" class="many-to-one"/> 
<g:select id="mv" name="mvid" from="${marchmock2.Tablev1class.list()}" optionKey="id" optionKey="pagetype" required="" value="${params?.mvid}" class="many-to-one"/> 

<g:select id="mv" name="mvid" from="${marchmock2.Tablev1class.list()}" optionKey="id" optionKey="platform" required="" value="${params?.mvid}" class="many-to-one"/> 

<g:select id="mv" name="mvid" from="${marchmock2.Tablev1class.list()}" optionKey="device" optionKey="device" required="" value="${params?.mvid}" class="many-to-one"/> 

我们扩大这个

<g:select id="mv" name="mvid" from="${marchmock2.Tablev1class.list()}" optionKey="device" optionKey="device" required="" value="${params?.mvid}" class="many-to-one" onchange="${remoteFunction (
     controller: 'someController', 
     action: 'someAction', 
     params: "'device=' + this.value", 
     update: 'newDivId' 
    )}"/> 

<div id="newDivId"> 
<!-- your output from when user selects something from above will end up showing the result from the someController/someAction?device={selected} will be repesented in here --> 
</div> 
+0

在我的应用程序中不需要依赖关系选择。所有下拉菜单都是独立的 – Nisha

+0

添加了更新以回答 – Vahid

+0

在我的应用程序中不需要依赖项相关的选择。所有下拉菜单都是独立的。此外,我们有巨大的数据集,因此在浏览器内对这些数据集进行过滤并不是一个好主意。因此,我想以某种方式在控制器内部进行数据过滤(在GSP中选择的角度),然后将其发送到浏览器,以便减少浏览器的负载。另外,对于Grails新手来说,我甚至不知道这是否可行。如果您有任何建议,请告诉我们。它将非常有帮助 – Nisha

相关问题