[英]grails gsp variables: how to pass as parameter of controller method in gsp
我的gsp頁面中有以下變量
<g:set var="valueDiscounted" value="${new ReceiptController().calculateDiscount(receiptInstance.totalAmount,
receiptInstance.discount)}" />
valueDiscounted
變量從名為calculateDiscount
的控制器方法獲取其值。 現在,我需要將此變量用作另一個控制器方法的參數,需要在同一gsp中調用它。 那是:
<td>Amount to pay: </td><td>€ ${new ReceiptController().calculateVat(${valueDiscounted},
receiptInstance.vatPercentage)}</td>
這種方式是不正確的,那么如何將valueDiscounted
傳遞給calculateVat
方法?
嘗試從視圖中調用控制器方法通常被認為是錯誤的設計。 相反,您應該將邏輯放入taglib中 ,控制器和視圖都可以調用該邏輯。
或者在這種情況下,將計算結果放入控制器動作中,將計算出的值存儲在模型中,然后視圖只需要呈現模型中的值,而不是自己計算任何東西。
您是否嘗試使用不帶$ {}的valueDiscounted:
<td>Amount to pay: </td><td>€ ${new ReceiptController().calculateVat(valueDiscounted,
receiptInstance.vatPercentage)}</td>
或嘗試g:set amountToPay,然后在中使用它,類似於:
<g:set var="amountToPay" value="${new ReceiptController().calculateVat(valueDiscounted,
receiptInstance.vatPercentage)}" />
<td>Amount to pay: </td><td>€ ${amountToPay}</td>
我還沒有嘗試過,只是問了一下。
有時我會傳遞一個服務實例進行建模。
//MyService
def calculateDiscount(def totalAmount, def discount){
// logic here
}
def calculateVat(def valueDiscounted, def vatPercentage){
// logic here
}
//MyController
def myService
def index(){
['instance':receiptInstance, 'service': myService]
}
//GSP
<g:set var="valueDiscounted" value="${service.calculateDiscount( instance.totalAmount, instance.discount)}" />
...
€ ${service.calculateVat(valueDiscounted, instance.vatPercentage)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.