2009-04-15 9 views
2

Ich versuche, ein Mime-Mapping-Element der web.xml hinzuzufügen.Korrekte Syntax zum Hinzufügen einer Mime-Zuordnung zu web.xml in einem Grails-Plugin

Mein aktueller besten Stich ist:

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

ich den Code kennen ist eigentlich wie das oben ausgeführt wird, gibt einen ungültigen web.xml. Die folgende scheint logisch zu sein, aber es hat eigentlich keine Wirkung:

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

edit: Ich bin mit Grails 1.0.3

Antwort

1

Versuchen

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

(anstelle des plus die leftShift beachten).

Wenn Sie sicherstellen möchten, dass Ihr neues Element an einer bestimmten Position innerhalb des XML eingefügt wird, können Sie das untergeordnete Element abrufen, nach dem das Element eingefügt werden soll, und das Element mit dem Operator plus hinzufügen. Zum Beispiel habe ich den folgenden Code verwenden, um ein neues Servlet-Mapping hinzuzufügen:

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

Wenn Sie weiter in diesen graben wollen, müssen Sie einen Blick auf groovy.util.slurpersupport.NodeChild (das xml Argument dieser Art) und ihren Ober groovy.util.slurpersupport.GPathResult .

Viel Glück!

+0

große Antwort ... sehr geschätzt –

0

Hmm, das einzige, was ich zu einer Config bezeichnet finden könnte Eigenschaft, um richtig in Anfragen Mime-Typen zugreifen eingestellt werden müssen:

grails.mime.file.extensions = true 

versuchen sie sicher, so dass diese auf true gesetzt ist, und es dann mit dem Code erneut versuchen, das funktioniert?

+0

nicht ganz das, was ich bin, nachdem ich Angst habe, habe ich versucht, Das scheint zunächst nicht für statische Dateien unter der Web-App zu funktionieren. –

+0

Yup, tut mir leid, aber es war die einzige Dokumentation, die ich finden konnte, die etwas relevant erschien. Viel Glück. – billjamesdev

2

Ich glaube, Sie können jetzt durch Hinzufügen eines mime-mapping Element direkt an die web.xml-Vorlage in src/templates/war/web.xml wie dies das Gleiche erreichen:

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