当前位置: 首页 > 知识库问答 >
问题:

从src/groovy中访问服务

仉昂熙
2023-03-14

我已经构建了一些自定义封送器,我正在尝试访问消息服务。我有以下代码。

Resources.groovy

customObjectMarshallers(CustomObjectMarshallers){
    marshallers = [
        new PersonMarshaller(),
        new DepartmentMarshaller(),
        new ErrorsMarshaller()
    ]
}
class CustomObjectMarshallers {
    List marshallers = []

    def register(){
        marshallers.each {
            it.register()
        }
    }
}
class ErrorsMarshaller {

    @Autowired
    def MessageSource messageSource

    void register(){

        JSON.registerObjectMarshaller(FieldError){ FieldError fieldError ->

            def pMap = [:]

            fieldError.properties.each { prop, val ->
                println 'prop ' + prop
                if( prop == 'rejected_value' || prop == 'arguments' || prop == 'class' || prop == 'codes' || prop == 'code' || prop == 'bindingFailure') {
                    return
                } else if(prop == 'defaultMessage') {
                    pMap[prop] = messageSource.getMessage(val, fieldError, Locale.US)
                } else {
                    pMap[prop] = MarshallerUtils.cleanPropertyValue(val)
                }               
            }

            return pMap
        }
    }
}

我得到以下异常

无法对空对象调用方法getMessage()。Stacktrace如下:java.lang.nullpointerException:无法在org.hri.leaverequest.marshaller.errorsmarshaller$_register_closure1_closure2.docall(errorsmarshaller.groovy:26)在org.hri.leaverequest.marshaller.errorsmarshaller$_register_closure1.docall(errorsmarshaller.groovy:21)在grails.converters.json.value(json.java:202)在ails.converters.json.render(json.java:134)在org.hri.leaverequest.calendarcontroller.processRequest(calendarcontroller.groovy:154)在grails.plugin.cache.web.filter.pagefragmentcachingfilter.doFilter(pagefragmentcachingfilter.java:198)在grails.plugin.cache.web.filter.abstractfilter.java:63)在RequestHolderAuthentdoFilter(requestholderAuthenticationFilter.java:49)在grails.plugin.springsecurity.web.authentication.logout.mutableLogoutFilter.doFilter(mutableLogoutFilter.java:82)在java.util.concurrent.threadPoolExecutor.runworker(threadPoolExecutor.java:1145)在java.util.concurrent.threadPoolExecutor$worker.run

共有1个答案

谷梁裕
2023-03-14

根据您的Grails版本(本例中为2.x),您可能需要在“Spring bean扫描”中包含这些包。查看config.groovy并添加它们:

// packages to include in Spring bean scanning
grails.spring.bean.packages = ['com.example.my.package.here']
 类似资料:
  • 我必须从我的 Groovy 脚本访问一个环境变量。我没有使用詹金斯。如何获取变量?

  • 我需要一个groovy脚本的代码示例,它可以访问存储在我的文件系统中任何地方的xml文件。在这个xml文件中,我有数据库凭据,我的脚本需要访问数据库。下面是xml 提前致谢:)

  • 本文向大家介绍groovy 访问物业,包括了groovy 访问物业的使用技巧和注意事项,需要的朋友参考一下 示例 注意:*是可选的。我们也可以像下面这样写上面的语句,Groovy编译器对此仍然很满意。            

  • 问题内容: 我们有一个Java Web应用程序,我们需要访问一个Web服务,它是一个https Web服务。所以我将ssl证书添加到Websphere; SSL证书和密钥管理>密钥库和证书> NodeDefaultKeyStore>签署者证书 SSL证书和密钥管理>密钥库和证书> NodeDefaultTrustStore>签署者证书 当应用程序尝试访问Web服务时,将引发如下异常: 我屏蔽了专用

  • 问题内容: 我正在制作一个打算在PC上本地运行的html页面,最好不要在本地服务器上运行(file://)。我还使用jQuery使操作/ AJAX更加容易。 我正在尝试从twitter API加载2个结果,但出现错误。代码如下: 我也尝试了以下代码,但没有改变结果。 我在chrome中(在本地服务器上)收到以下错误: 或(带有file://链接) 有谁知道我该如何解决? 问题答案: 您遇到了同源策

  • 问题内容: 我需要在本地使用数据库。我已经使用Visual Studio 2012在(LocalDB)\ v11.0 Server中创建了数据库。从例如控制台应用程序进行连接时,一切正常。但是我的应用程序是Windows Service。尝试通过以下方式连接到我的数据库输出: 有什么解决办法吗?也许我应该考虑为此设置其他数据库服务器?如果是,如何设置它使其仅在本地可见? 问题答案: 所以我自己找到