如何实现 spring 对自定义模板引擎的支持?

how to implement spring support for custom template engine?

我决定使用带有 Spring MVC 框架的自定义模板引擎。

我的模板在 java 中实现并具有渲染成字符串的方法:

public String render(Map context);

如何配置 spring 以使其在控制器 bean 中作为视图可用,例如:

ModelAndView modelAndView = new ModelAndView("activationPage"); // - view name which will actually be java class name reference.
modelAndView.addObject("validationResult", validationResult);
return modelAndView;

模型将在连接 spring 和我的模板引擎的代码中作为上下文传递。

您需要实现 org.springframework.web.servlet.View(这应该很容易,您已经拥有与它需要的 render 方法非常相似的东西),以及 org.springframework.web.servlet.ViewResolver,它映射在您的自定义视图上查看名称(例如 "activationPage")。

一旦你有了它,将你的 ViewResolver class 的一个 bean 放到上下文中,并且(除非你做了其他阻碍)它应该会自动被拾取通过 Spring 并且应该可以正常工作。如果您已经有其他 ViewResolver 在那里,他们可能会为谁来解决视图而争吵,在这种情况下提出一个新问题。

您好,我是 Rythm template engine, about half year ago I am having the same requirement like you. What I did is to read the source code of Velocity and Freemarker view of SpringFramework. And then create the Rythm view 的作者,spring 遵循他们的方法。

遵循已经存在的东西很容易,并且遵循官方模块使您的实现质量更高。祝你好运:-)