更改Grails插件中doWithWebDescriptor闭包的web.xml值



我们正在编写一个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等。似乎什么都不起作用。

试试这个。

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

最新更新