正确的语法是在grails插件中向web.xml添加mime-mapping

时间:2009-04-15 15:29:06

标签: grails groovy grails-plugin

我正在尝试将mime-mapping元素添加到web.xml。

我目前最好的准备是:

def doWithWebDescriptor = { xml ->
    xml + {
        'mime-mapping' {
            'extension'("htc")
            'mime-type'("text/x-component")
        }
    }
}

我知道代码正在运行,因为上面实际输出了一个无效的web.xml。以下似乎更合乎逻辑,但它实际上没有任何影响:

def doWithWebDescriptor = { xml ->
    xml.'mime-mapping' + {
            'extension'("htc")
            'mime-type'("text/x-component")
        }
}

编辑:我正在使用grails 1.0.3

3 个答案:

答案 0 :(得分:2)

我相信您现在可以通过将mime-mapping元素直接添加到src/templates/war/web.xml中的web.xml模板来完成同样的事情:

<mime-mapping> 
    <extension>htc</extension>
    <mime-type>text/x-component</mime-type> 
</mime-mapping>

答案 1 :(得分:1)

尝试

def doWithWebDescriptor = { xml ->
    xml << {
        'mime-mapping' {
            'extension'("htc")
            'mime-type'("text/x-component")
        }
    }
}

(请注意leftShift而不是plus)。

或者,如果要确保将新元素插入XML中的特定位置,则可以获取子元素,之后您希望插入元素,并使用{{1}添加元素。运算符。例如,我使用以下代码添加新的servlet-mapping:

plus

如果您想进一步深入研究,请查看def servletMappings = xml.'servlet-mapping' servletMappings[servletMappings.size() - 1] + { 'servlet-mapping' { 'servlet-name'("myServlet") 'url-pattern'("/myURL") } } groovy.util.slurpersupport.NodeChild参数属于该类型)及其超类xml

祝你好运!

答案 2 :(得分:0)

嗯,我唯一能找到的东西是为了正确访问请求中的mime类型而必须设置的配置属性:

grails.mime.file.extensions = true

尝试确保将其设置为true,然后使用有效的代码再次尝试?