如何在grails服务类中使用g.formatNumber

时间:2014-01-07 11:45:09

标签: grails gsp number-formatting grails-services

我想在服务中使用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
     }
}

如何做到这一点。

2 个答案:

答案 0 :(得分:5)

  

我想在服务中使用g.formatNumber

不需要跳过需要在服务中使用taglib的箍,而是直接使用java.text.NumberFormat会更简单

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

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

答案 1 :(得分:0)

这应该有效

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

你当然需要通过定义gralaApplication来注入ala

def grailsApplication