Правильный синтаксис для добавления mime-mapping в web.xml в плагине Grails

2 Gareth Davis [2009-04-15 18:29:00]

Я пытаюсь добавить элемент 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")
        }
}

edit: Я использую grails 1.0.3

grails groovy grails-plugin


3 ответа


1 Решение Daniel Rinser [2009-04-21 17:23:00]

Try

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

(обратите внимание на leftShift вместо plus).

В качестве альтернативы, если вы хотите, чтобы ваш новый элемент был вставлен в определенную позицию в XML, вы можете получить дочерний элемент, после которого вы хотите, чтобы ваш элемент был вставлен, и добавьте ваш оператор plus, Например, я использую следующий код для добавления нового отображения сервлета:

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

Если вы хотите углубиться в это, посмотрите groovy.util.slurpersupport.NodeChild (аргумент xml этого типа) и его суперкласс groovy.util.slurpersupport.GPathResult.

Удачи!


2 bebeastie [2011-05-01 03:02:00]

Я считаю, что теперь вы можете сделать то же самое, добавив элемент mime-mapping непосредственно в шаблон web.xml в src/templates/war/web.xml следующим образом:

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

0 billjamesdev [2009-04-15 20:58:00]

Хмм, единственное, что я мог найти, ссылается на свойство конфигурации, которое должно быть установлено для правильного доступа к типом mime в запросах:

grails.mime.file.extensions = true

Попробуйте убедиться, что для этого параметра установлено значение true, а затем повторите попытку с помощью кода, который работает?