【问题标题】:Changing web.xml value from doWithWebDescriptor closure in Grails Plugin从 Grails 插件中的 doWithWebDescriptor 闭包更改 web.xml 值
【发布时间】:2015-03-27 18:08:48
【问题描述】:

我们正在编写一个 Grails 插件,需要让插件修改 web.xml 文件。我们正在添加条目(该部分已经完成),我们还需要修改 web.xml 中的现有条目。这就是我们遇到问题的部分。

根据文档,传递给 doWithWebDescriptor 闭包的参数应该是一个 GPathResult 对象。所以我们假设我们可以做以下事情(以会话超时为例):

def doWithWebDescriptor = { xml ->
  xml.'session-config'.'session-timeout'.replaceBody(60)
}

但这会引发以下异常:

groovy.lang.MissingMethodException: No signature of method: groovy.xml.dom.DOMCategory$NodeListsHolder.replaceBody() is applicable for argument types ...

这个异常使它看起来像传递给这个闭包的参数实际上不是一个 GPathResult 对象,而是一个 DOMCategory$NodeListsHolder 对象,几乎没有文档。

我们还尝试了其他方法,例如使用 replaceNode 等。似乎没有任何效果。

【问题讨论】:

    标签: xml grails groovy web.xml grails-plugin


    【解决方案1】:

    试试这个。

    def doWithWebDescriptor = { xml ->
        xml.'session-config'.'session-timeout'[0].replaceNode {
            'session-timeout' 60
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多