代码之家  ›  专栏  ›  技术社区  ›  Gareth Davis

在Grails插件中添加web.xml的mime映射的正确语法

  •  2
  • Gareth Davis  · 技术社区  · 15 年前

    我正在尝试向web.xml添加一个mime映射元素。

    我目前最好的一招是:

    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")
            }
    }
    

    编辑:我用的是Grails1.0.3

    3 回复  |  直到 13 年前
        1
  •  1
  •   Daniel Rinser    15 年前

    尝试

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

    (注意 leftShift 而不是 plus )

    或者,如果要确保在XML中的特定位置插入新元素,可以获取子元素,在子元素之后插入元素,并使用 操作员。例如,我使用以下代码添加新的servlet映射:

    def servletMappings = xml.'servlet-mapping'
    servletMappings[servletMappings.size() - 1] + {
        'servlet-mapping' {
            'servlet-name'("myServlet")
            'url-pattern'("/myURL")
        }
    }
    

    如果你想深入研究这个问题,请看一下 groovy.util.slurpersupport.NodeChild (the xml 参数的类型)及其超类 groovy.util.slurpersupport.GPathResult .

    祝你好运!

        2
  •  2
  •   bebeastie    13 年前

    我相信你现在可以通过添加 mime-mapping 元素直接到中的web.xml模板 src/templates/war/web.xml 这样地:

    <mime-mapping> 
        <extension>htc</extension>
        <mime-type>text/x-component</mime-type> 
    </mime-mapping>
    
        3
  •  0
  •   billjamesdev    15 年前

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

    grails.mime.file.extensions = true
    

    请确保将此设置为true,然后使用有效的代码重试?