2010-06-09 23 views
7

Tôi đang tạo XML bằng cách sử dụng Apache Velocity. Cách tốt nhất (thẳng thắn nhất) nào để XML thoát khỏi đầu ra?Cách XML thoát với Apache Velocity?

(tôi thấy có một công cụ thoát hiểm, nhưng không thể tìm ra nhà nước dev nó. Tôi cũng nghĩ rằng XML thoát là cái gì đó rất có khả năng được hỗ trợ bởi Velocity trực tiếp.)

Trả lời

10

Hãy xem event handlers.

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

cụ Escape là một sản xuất sẵn sàng cũng như nếu bạn cần phải thoát khỏi chỉ tài liệu tham khảo có chọn lọc (phiên bản cuối cùng của các công cụ được phát hành chỉ thời gian gần đây nhưng nó đã được trong giai đoạn beta trước đó trong 2 năm nếu không còn)

$esc.xml($var) 

Cách khởi động công cụ vận tốc.

Bao gồm vận tốc-tools.xml vào dự án của bạn và cho phép công cụ cần thiết:

<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> 

Sau đó, thủ tục vận tốc tạo bối cảnh sẽ trông như thế:

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

Cảm ơn serg555, mà làm cho ngày của tôi! –

+0

serg555, bạn có thể cho tôi biết, cách tôi thêm công cụ Escape bằng cách sử dụng cấu hình thuộc tính (không có tệp XML)? –

+0

Cập nhật: Tôi đã thử các cách sau: 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"); Nhưng điều đó dường như không hoạt động. Tôi đang làm gì sai? –

Các vấn đề liên quan