如何在show.gsp上显示计算字段?

时间:2012-10-23 03:22:10

标签: jquery ajax grails service gsp

我在处理计算的非存储字段时遇到一些困难。我想展示我的实际域类,但他们有很多领域。那么让我们考虑以下域类:

class ImportantCalculation {
 BigDecimal parameter1
 BigDecimal parameter2
 BigDecimal parameter3
 BigDecimal result1
 BigDecimal result2
 ...
}

result1和result2是依赖于使用parameter1,parameter2和parameter3计算的子结果的计算字段。使用一种数学符号(实际计算涉及许多类和数据库查询):

subresult1=function(parameter1)
subresult2=function(parameter2,parameter3)
result1=function(subresult1,subresult2)
result2=function(parameter1,subresult2)

在create.gsp中,此计算在由服务调用的Java类中执行。该服务由控制器使用。此控制器由JavaScript文件中的自动完成jQuery元素调用,然后显示在相应的字段中:

Calculations.java -> CalculationsService.groovy -> CalculationsController -> calculations.js -> GSP view.

GSP视图包含显示子结果的字段。

存储这个子结果会更容易,但因为可以计算它没有必要,但我不能用最终结果来做。

所以,我需要将这些子结果显示在show.gsp视图中以及edit.gsp视图中。但我不知道该怎么做。我试图使用Ajax和jQuery,但我是这些工具的新手。

请帮帮我。

提前致谢。

1 个答案:

答案 0 :(得分:0)

在你的gsp中你可以使用对控制器的ajax调用来为你计算结果并以JSON形式返回。在您的gsp中,您将拥有如下的javascript代码:

 $.ajax({
        var value = "any value to be passed as param";
        url: "${createLink(controller: 'calculations', action: 'calculate')}",
        data: {key:value}, //in your controller, look for the parameter "key" in params map
        dataType: 'json',
        success: function(data) {
            if (data) {
             //do something with data (the json object rendered by the action 'calculate')   
            }
        }

    });

在您的控制器中,您将有一个计算结果的动作或将结果存储在某处,例如:

def calculate() {
    def result = calculatorService.doSomething()
    render result as JSON
}

带有“render”命令的行是将结果发送回调用者的行(你的javascript'success'函数)。

您可以查看相同内容herehere的示例。