2

我想在服务中使用 g.formatNumber,我尝试了以下方法,我上网了。这不起作用,它给了我错误"Cannot invoke method formatNumber() on null object",代码如下

    import org.springframework.beans.factory.InitializingBean

    class MyService implements InitializingBean {
        boolean transactional = false
        def gspTagLibraryLookup  // being automatically injected by spring
        def g

        public void afterPropertiesSet() {
            g = gspTagLibraryLookup.lookupNamespaceDispatcher("g")
            assert g
        }

      def getFormattedNumber(){
       def number = g.formatNumber(number: 5000,234 , type: "number" , maxFractionDigits: 2)
       return number
     }
}

这个怎么做。

4

2 回答 2

6

我想在服务中使用 g.formatNumber

与其跳过你需要在服务中使用 taglib 的麻烦,不如java.text.NumberFormat直接使用它会更简单

NumberFormat format = NumberFormat.getNumberInstance()
format.maximumFractionDigits = 2
def number = format.format(5000.234)

如果服务方法是从 Web 请求处理线程调用的,那么您可能希望使用LocaleContextHolder来获取当前 Web 请求的正确区域设置,而不仅仅是使用服务器的默认设置。

于 2014-01-07T13:18:11.413 回答
2

这应该工作

def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib');

您当然需要通过定义 ala 来注入 grailsApplication

def grailsApplication
于 2016-02-04T17:14:33.990 回答