我在处理计算的非存储字段时遇到一些困难。我想展示我的实际域类,但他们有很多领域。那么让我们考虑以下域类:
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,但我是这些工具的新手。
请帮帮我。
提前致谢。
答案 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'函数)。