2009-04-15 16 views
2

J'essaye d'ajouter un élément mime-mapping au fichier web.xml.Syntaxe correcte pour ajouter un mappage mime à web.xml dans un plugin grails

Mon meilleur coup de couteau en cours est:

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

Je sais que le code est exécuté comme ci-dessus sorties en fait un web.xml non valide. Ce qui suit semble être plus logique, mais il n'a pas vraiment d'effet:

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

modifier: J'utilise Grails 1.0.3

Répondre

1

Essayez

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

(notez le leftShift au lieu du plus). Alternativement, si vous voulez vous assurer que votre nouvel élément est inséré à une position spécifique dans le XML, vous pouvez obtenir l'élément enfant, après lequel vous voulez insérer votre élément, et ajouter le vôtre avec l'opérateur plus. Par exemple, j'utiliser le code suivant pour ajouter une nouvelle servlet-mapping:

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

Si vous voulez creuser plus loin dans ce, jetez un oeil à groovy.util.slurpersupport.NodeChild (l'argument xml est de ce type) et sa superclasse groovy.util.slurpersupport.GPathResult .

Bonne chance!

+0

bonne réponse ... très appréciée –

0

Hmm, la seule chose que je pouvais trouver une configuration appelée la propriété qui doit être réglée afin d'accéder correctement types MIME dans les requêtes:

grails.mime.file.extensions = true 

essayez de faire que cela est défini sur true, et puis essayez à nouveau avec le code qui fonctionne?

+0

pas tout à fait ce que je suis après que j'ai peur, j'ai essayé ce premier, il ne semble pas fonctionner pour les fichiers statiques sous l'application web –

+0

Yup, désolé, mais c'était les seuls docs que j'ai pu trouver qui semblaient quelque peu pertinents. Bonne chance. – billjamesdev

2

Je crois que vous pouvez accomplir la même chose en ajoutant un élément mime-mapping directement au modèle web.xml dans src/templates/war/web.xml comme ceci:

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