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

时间:2015-03-27 18:08:49

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

我们正在编写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等。似乎没什么用。

1 个答案:

答案 0 :(得分:0)

试试这个。

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