我想在服务中使用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
}
}
如何做到这一点。
答案 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