2009-04-15 7 views
2

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

Мой текущий лучший удар является:

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

ответ

1

Попробуйте

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 ,

Удачи вам!

+0

отличный ответ ... очень ценится –

0

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

grails.mime.file.extensions = true 

Try убедившись, что это значение иСТИНА, а затем попробовать снова с кодом, который работает?

+0

не совсем то, что я после Боюсь, я пытался это во-первых, похоже, что это не работает для статических файлов в веб-приложении. –

+0

Yup, извините, но это были единственные документы, которые я мог найти, что казалось несколько актуальным. Удачи. – billjamesdev

2

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

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