Правильный синтаксис для добавления 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, а затем повторите попытку с помощью кода, который работает?