【问题标题】:Custom template engine for struts2struts2 的自定义模板引擎
【发布时间】:2010-12-07 10:31:20
【问题描述】:

我想创建一个自定义 模板引擎,例如 velocityfreemarker,它将在基于 struts 2 的应用程序中使用。为什么我不想使用任何可用的模板引擎是因为,我想保持 HMTL 固定并可被 Dreamweaver 编辑,这意味着没有 struts 标签或 JSTL。这些值将被注入 Xpath 或现有 HTML 标记值的简单字符串替换。我需要:

纯 HTML + 一些配置(属性/xml)+ 数据 =>

用数据填充的 HTML + 一些动态生成的 javascripts

【问题讨论】:

  • 如何编写freemarker这样的模板引擎?如何将我的模板引擎与 struts2 集成?

标签: struts2 template-engine


【解决方案1】:

1) 使用您的结果类型的名称定义一个包,以及在操作返回该结果类型时将调用的类。

<package name="default" namespace="/" extends="struts-default">
  <result-types>
    <result-type name="myResultType" class="com.awesome.MyResult"/> 
  </result-types>
  .... actions and other things...
</package>

2) 实现 Struts 2 结果类型类:

package com.awesome;
public class MyResult extends StrutsResultSupport{
  //1) read the the target file
  //2) process/transform the target file
  //3) write out the transformed file as the result
} 

在 Dave Newton 的“Apache Struts 2 web application Development”中有很好的描述。我知道上面的类没有实现,但我敢打赌你可以从这里找到你需要的东西。

【讨论】:

  • 谢谢,我现在正在使用它。对于其他希望使用它的人,我可以给你一些指示。打开 struts 默认查找实现类 FreemarkerResult.javaXSLTResult.java 的拦截器是我读过的两个类,它们的作用相当简单。我还建议通过 http://www.oracle.com/technetwork/java/filters-137243.html 关于 java 过滤器,特别是如果您想修改响应。 HttpResponseWrapper 是必需的。还有一件事是 PreResultListener,它可以在要评估结果之前操纵调用对象。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多