如何在grails服务类中使用g.formatNumber
我想在服务中使用g.formatNumber,我已经尝试了下面的方法,这是我在网上得到的。这不起作用,它给了我一个错误如何在grails服务类中使用g.formatNumber,grails,gsp,number-formatting,grails-services,Grails,Gsp,Number Formatting,Grails Services,我想在服务中使用g.formatNumber,我已经尝试了下面的方法,这是我在网上得到的。这不起作用,它给了我一个错误“不能调用null对象上的formatNumber()方法”,代码如下 import org.springframework.beans.factory.InitializingBean class MyService implements InitializingBean { boolean transactional = false
“不能调用null对象上的formatNumber()方法”
,代码如下
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
}
}
如何做到这一点
我想在服务中使用g.formatNumber
直接使用java.text.NumberFormat
会比在服务中使用标记库更简单,而不是跳转
NumberFormat format = NumberFormat.getNumberInstance()
format.maximumFractionDigits = 2
def number = format.format(5000.234)
如果服务方法是从web请求处理线程调用的,则您可能希望使用获取当前web请求的正确区域设置,而不仅仅是使用服务器的默认设置。这应该可以工作
def g = grailsApplication.mainContext.getBean('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib');
您当然需要通过定义grailsApplication注入它
def grailsApplication
我认为问题不在于formatNumber()。你能检查一下getFormattedNumber()中的g是否为null吗?我认为@HernánErasmo是正确的。是的,这总是一个解决方案,但在服务中特别使用g标记是我在grails 2.1
import groovy.xml.MarkupBuilder def g=Holders.grailsApplication.mainContext.getBean中提出的问题('org.codehaus.groovy.grails.plugins.web.taglib.ApplicationTagLib')