2012-06-21 62 views
2

我找到how to create a custom type converter with Spring 3的文檔,但我找不到任何在Grails中註冊轉換器的示例,以便bindData可以使用它。如何在Grails中註冊自定義類型轉換器?

我嘗試添加該配置對conf /春/ resources.groovy文件:

conversionService(org.springframework.context.support.ConversionServiceFactoryBean) { 
    converters { 
     com.initech.reports.tps.StringToFooConverter 
    } 
} 

這最終踩着東西,因爲只要我加入轉爐中,我得到像啓動堆棧跟蹤此:

2012-06-21 10:09:50614 [主要] ERROR context.GrailsContextLoader - 錯誤執行自舉:錯誤名稱 'FooApprovers' 創建豆:無法創建內部bean「(內部bean) '的類型 [組織。 springframework.xml.xsd.commons.CommonsXsdSchemaCollection],而 設置bean屬性'schemaCollection';嵌套的異常是 org.springframework.beans.factory.BeanCreationException:錯誤 創建名爲'(內部bean)#7'的bean:初始化bean 失敗;嵌套的異常是 org.springframework.beans.TypeMismatchException:未能將屬性'xsds'的類型'java.lang.String []'的 屬性值轉換爲所需類型 'org.springframework.core.io.Resource []' 「;嵌套0​​例外是 org.springframework.core.convert.ConversionFailedException:無法從 類型 轉換值「{} /WEB-INF/ws/FooApproversService.xsd」「java.lang.String中[]」爲類型「的有機.springframework.core.io.Resource []'; 嵌套的異常是 org.springframework.core.convert.ConverterNotFoundException:否 變換器發現能夠從「java.lang.String中」轉換爲 「org.springframework.core.io.Resource」 org.springframework.beans的。 factory.BeanCreationException:錯誤 創建名爲'FooApprovers'的bean:無法創建內部bean '(內部bean)'類型 [org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection]而 設置bean屬性'schemaCollection';嵌套的異常是 org.springframework.beans.factory.BeanCreationException:錯誤 創建名爲'(內部bean)#7'的bean:初始化bean 失敗;嵌套的異常是 org.springframework.beans.TypeMismatchException:未能將屬性'xsds'的類型'java.lang.String []'的 屬性值轉換爲所需類型 'org.springframework.core.io.Resource []' 「;嵌套0​​例外是 org.springframework.core.convert.ConversionFailedException:無法從 類型 轉換值「{} /WEB-INF/ws/FooApproversService.xsd」「java.lang.String中[]」爲類型「的有機.springframework.core.io.Resource []'; 嵌套的異常是 org.springframework.core.convert.ConverterNotFoundException:否 變換器發現能夠從「java.lang.String中」轉換爲 「org.springframework.core.io.Resource」中的 org.grails.tomcat .TomcatServer.start(TomcatServer.groovy:212)在 grails.web.container.EmbeddableServer $ start.call(未知來源)在 _GrailsRun_groovy $ _run_closure5_closure12.doCall(_GrailsRun_groovy:158) 在 _GrailsRun_groovy $ _run_closure5_closure12.doCall(_GrailsRun_groovy )at _GrailsS​​ettings_groovy $ _run_closure10.doCall(_GrailsS​​ettings_groovy:280) at _GrailsS​​ettings_groovy $ _run_closure10。在_GrailsRun_groovy $ _run_closure1在_GrailsRun_groovy.this $ 4 $ runInline(_GrailsRun_groovy)調用(_GrailsS​​ettings_groovy) 在_GrailsRun_groovy $ _run_closure5.doCall(_GrailsRun_groovy::149)在 _GrailsRun_groovy $ _run_closure5.call(_GrailsRun_groovy)在_GrailsRun_groovy.runInline(116 _GrailsRun_groovy)。 doCall(_GrailsRun_groovy:59)在RunApp $ _run_closure1.doCall(RunApp:33)at gant.Gant $ _dispatch_closure5.doCall(Gant.groovy:381)at gant.Gant $ _dispatch_closure7.doCall(Gant.groovy:415)at gant.Gant $ _dispatch_closure7.doCall(Gant.groovy)在 gant.Gant.withBuildListeners(Gant.groovy:427)處 gant.Gant $ gant.Gant.this $ 2 $ withBuildListeners(Gant.groovy)這個$ 2 $ withBuildListeners.callCurrent(Unknown Source)at gant .Gant.dispatch(Gant.groovy:415)at gant.Gant.this $ 2 $ dispatch(Gant.groovy)at gant.Gant.invokeMethod(Gant.groovy)at gant.Gant.executeTargets(Gant.groovy: 590)在 gant.Gant.executeTargets(Gant.groovy:589)

我使用Grails 1.3.7(包括春季3.0.5)。

顯然,還有一些其他方式的類型轉換器已被添加,我通過明確地配置轉換服務搞砸了嗎?有沒有辦法註冊一個自定義類型轉換器而不踩其他轉換器?

回答

1

您正在尋找自定義屬性編輯器我猜。

您需要創建自定義屬性編輯器,和一個屬性編輯器註冊商,然後在resources.groovy註冊您註冊商 - 之後bindDate應該能夠使用

看到這個article

相關問題