【问题标题】:grails gsp variables: how to pass as parameter of controller method in gspgrails gsp变量:如何在gsp中作为控制器方法的参数传递
【发布时间】:2013-09-17 08:53:34
【问题描述】:

我的 gsp 页面中有以下变量

<g:set var="valueDiscounted" value="${new ReceiptController().calculateDiscount(receiptInstance.totalAmount,
                                                                                receiptInstance.discount)}" />

valueDiscountedvariable 从名为calculateDiscount 的控制器方法中获取其值。现在,我需要将此变量用作另一个控制器方法的参数,我需要在同一个 gsp 中调用它。那就是:

<td>Amount to pay: </td><td>€ ${new ReceiptController().calculateVat(${valueDiscounted},
        receiptInstance.vatPercentage)}</td>

这种方式是不正确的,那么如何将valueDiscounted传递给calculateVat方法呢?

【问题讨论】:

  • 你的控制器是什么样的?我通常讨厌在我的观点中有逻辑,你必须使用 g:set 吗?

标签: variables grails gsp


【解决方案1】:

尝试从视图调用控制器方法通常被认为是一种糟糕的设计。相反,您应该将逻辑放入 taglib 中,控制器和视图都可以调用它。

或者在这种情况下,将计算放入控制器动作中,将计算出的值存储在模型中,然后视图只需要从模型中渲染值,而不是自己计算任何东西。

【讨论】:

    【解决方案2】:

    您是否尝试过在不使用 ${} 的情况下使用 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>
    

    我没试过,只是在问。

    【讨论】:

      【解决方案3】:

      有时我将服务实例传递给模型。

      //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)}
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多