2010-06-09 15 views
7

Generuję XML za pomocą prędkości Apache. Jaki jest najlepszy (najbardziej bezpośredni) sposób na wyjście XML z wyjścia?Jak XML ucieka z Apache Velocity?

(widziałem tam jest narzędziem ucieczki, ale nie mogliśmy zorientować się, że to stan dev. Myślę też, że XML wyciek jest coś, co jest bardzo prawdopodobne, wspierany przez Velocity bezpośrednio.)

Odpowiedz

10

Spójrz na event handlers.

eventhandler.referenceinsertion.class = org.apache.velocity.app.event.implement.EscapeXmlReference 

narzędzie Escape jest produkcja gotowych, jak również, jeśli trzeba uciec tylko referencje selektywnych (ostateczna wersja narzędzia została wydana niedawno, ale to było w fazie beta wcześniej, że przez 2 lata, jeśli nie dłużej)

$esc.xml($var) 

Jak zainicjować narzędzia prędkości.

Dołącz prędkość-Tools.xml do projektu i umożliwi wymagane narzędzia:

<tools> 
    <data type="number" key="TOOLS_VERSION" value="2.0"/> 
    <data type="boolean" key="GENERIC_TOOLS_AVAILABLE" value="true"/> 
    <toolbox scope="application"> 
     <tool class="org.apache.velocity.tools.generic.AlternatorTool"/> 
     <tool class="org.apache.velocity.tools.generic.DisplayTool"/> 
     <tool class="org.apache.velocity.tools.generic.MathTool"/> 
     <tool class="org.apache.velocity.tools.generic.NumberTool"/> 
     <tool class="org.apache.velocity.tools.generic.ComparisonDateTool"/> 
     <tool class="org.apache.velocity.tools.generic.ClassTool"/> 
     <tool class="org.apache.velocity.tools.generic.ConversionTool"/> 
     <tool class="org.apache.velocity.tools.generic.EscapeTool"/> 
     <tool class="org.apache.velocity.tools.generic.FieldTool"/> 
     <tool class="org.apache.velocity.tools.generic.ListTool"/> 
     <tool class="org.apache.velocity.tools.generic.ResourceTool"/> 
     <tool class="org.apache.velocity.tools.generic.SortTool"/> 
    </toolbox> 
    <toolbox scope="request"> 
     <tool class="org.apache.velocity.tools.generic.LoopTool"/> 
     <tool class="org.apache.velocity.tools.generic.ContextTool"/> 
     <tool class="org.apache.velocity.tools.generic.LinkTool"/> 
     <tool class="org.apache.velocity.tools.generic.RenderTool"/> 
    </toolbox> 
</tools> 

Następnie procedura tworzenia kontekstu prędkość będzie wyglądać następująco:

ToolManager velocityToolManager = new ToolManager(); 
velocityToolManager.configure("velocity-tools.xml"); 
VelocityContext context = new VelocityContext(velocityToolManager.createContext()); 
+0

Dzięki serg555, który sprawia, że ​​mój dzień! –

+0

serg555, czy możesz mi powiedzieć, jak mogę dodać narzędzie Escape przy użyciu właściwości config (bez pliku XML)? –

+0

Aktualizacja: Próbowałem następujące: p.setProperty ("tools.toolbox", "request, session, application"); \t \t \t p.setProperty ("tools.session.esc", "org.apache.velocity.tools.generic.EscapeTool"); \t \t \t p.setProperty ("tools.request.esc", "org.apache.velocity.tools.generic.EscapeTool"); \t \t \t p.setProperty ("tools.application.esc", "org.apache.velocity.tools.generic.EscapeTool"); Ale to nie działa. Co ja robię źle? –

Powiązane problemy