簡體   English   中英

grails gsp變量:如何在gsp中作為控制器方法的參數傳遞

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM