0

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

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,但我是这些工具的新手。

请帮我。

提前致谢。

4

1 回答 1

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' 函数)。

您可以在此处此处查看相同内容的示例。

于 2012-10-23T14:06:13.687 回答