2011-06-29 14 views
7

Tốc độ của Apache - getTemplate(). Trên thực tế nó cho phép để vượt qua tên tập tin .vm, tôi có thể vượt qua chuỗi/đối tượng ở đây? là có bất kỳ phương pháp có sẵn để vượt qua chuỗi/đối tượng?Vận tốc của Apache - getTemplate(). cách truyền chuỗi/đối tượng thay vì tệp .VM

+0

có thể trùng lặp của [Làm thế nào để sử dụng String như Velocity Template?] (Http://stackoverflow.com/questions/1432468/how-to-use-string-as-velocity-template) – Toparvion

Trả lời

1

xem xét chuỗi StringResourceLoader

+0

Tôi tìm thấy một ví dụ cho StringResourceLoader. http://velocity.apache.org/engine/devel/apidocs/org/apache/velocity/runtime/resource/loader/StringResourceLoader.html. Nhưng chúng tôi đang có thông tin mẫu của chúng tôi trong chuỗi định dạng. chúng ta cần truyền chuỗi thay vì .vm. tôi nên làm gì cho kịch bản này. xin vui lòng nếu có bất kỳ mã ví dụ. – vasantharajan

+1

StringResourceLoader cho phép bạn trực tiếp thêm mẫu vào kho lưu trữ của bạn và sau đó lấy chúng như bất kỳ mẫu nào khác. StringResourceLoader.getRepository(). PutStringResource (myTemplateName, myTemplateString); –

2

Đây là mã mẫu làm việc cho tôi.
Phiên bản vận tốc: 1.7
Tôi sử dụng log4j làm trình ghi nhật ký.

import org.apache.log4j.Logger; 
import org.apache.velocity.Template; 
import org.apache.velocity.VelocityContext; 
import org.apache.velocity.app.Velocity; 
import org.apache.velocity.app.VelocityEngine; 
import org.apache.velocity.runtime.RuntimeConstants; 
import org.apache.velocity.runtime.resource.loader.StringResourceLoader; 
import org.apache.velocity.runtime.resource.util.StringResourceRepository; 


private static void velocityWithStringTemplateExample() { 
    // Initialize the engine. 
    VelocityEngine engine = new VelocityEngine(); 
    engine.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.Log4JLogChute"); 
    engine.setProperty("runtime.log.logsystem.log4j.logger", LOGGER.getName()); 
    engine.setProperty(Velocity.RESOURCE_LOADER, "string"); 
    engine.addProperty("string.resource.loader.class", StringResourceLoader.class.getName()); 
    engine.addProperty("string.resource.loader.repository.static", "false"); 
    // engine.addProperty("string.resource.loader.modificationCheckInterval", "1"); 
    engine.init(); 

    // Initialize my template repository. You can replace the "Hello $w" with your String. 
    StringResourceRepository repo = (StringResourceRepository) engine.getApplicationAttribute(StringResourceLoader.REPOSITORY_NAME_DEFAULT); 
    repo.putStringResource("woogie2", "Hello $w"); 

    // Set parameters for my template. 
    VelocityContext context = new VelocityContext(); 
    context.put("w", "world!"); 

    // Get and merge the template with my parameters. 
    Template template = engine.getTemplate("woogie2"); 
    StringWriter writer = new StringWriter(); 
    template.merge(context, writer); 

    // Show the result. 
    System.out.println(writer.toString()); 
} 
Các vấn đề liên quan