第七章 模板
目前ActFramework支持的模板引擎:
- Rythm (框架内置) - 引擎ID: rythm
- Beetl - 引擎ID: beetl
- FreeMarker - 引擎ID: freemarker
- Mustache - 引擎ID: mustache
- Thymeleaf - 引擎ID: thymeleaf
- Velocity - 引擎ID: velocity
注意 如果要使用非Rythm模板引擎需要在pom.xml
文件中分别加入响应的依赖:
Beelt依赖:
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act-beetl</artifactId>
<version>1.0.0</version>
</dependency>
Freemarker依赖:
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act-freemarker</artifactId>
<version>1.0.1</version>
</dependency>
Mustache依赖:
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act-mustache</artifactId>
<version>1.0.0</version>
</dependency>
Thymeleaf依赖:
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act-thymeleaf</artifactId>
<version>1.0.0</version>
</dependency>
Velocity依赖:
<dependency>
<groupId>org.actframework</groupId>
<artifactId>act-velocity</artifactId>
<version>1.0.0</version>
</dependency>
7.1 模板文件的位置" class="reference-link">7.1 模板文件的位置
ActFramework依照以下管理访问模板文件:
/src/main/resources/{template-plugin-id}/{controller-class}/{action-method}.{fmt-suffix}
假设你的控制器类是
package com.mycom.myprj;
public class MyController {
@GetAction("/")
public void home() {
}
@GetAction("/foo")
public Foo getFoo() {
return Foo.instance();
}
}
对应与home()
和getFoo()
响应方法的两个模板文件分别为:
/src/main/resources/rythm/com/mycom/myprj/MyController/home.html
/src/main/resources/rythm/com/mycom/myprj/MyController/getFoo.html
如果你的应用需要对发送到/foo
的请求支持application/json
格式, 你可以创建json格式模板文件如下:
/src/main/resources/rythm/com/mycom/myprj/MyController/getFoo.json
7.2 模板参数传递" class="reference-link"> 7.2 模板参数传递
ActFramework使用ASM对响应方法做了增强,因此你不必像在Spring MVC应用中那样显示指定参数
一个SpringMVC的响应方法:
public String foo(String a, String b, int c, ModelMap modelMap) {
modelMap.put("a", a);
modelMap.put("b", b);
modelMap.put("c", c);
modelMap.put("abc", a + b + c);
return "/path/to/the/template";
}
用ActFramework重写上面的方法:
public Result foo(String a, String b, int c) {
String abc = a + b + c;
return render(a, b, c, abc);
}
在Rythm引擎中申明参数:
@args String a, String b, int c
<pre>
a = @a
b = @b
c = @c
</pre>
注意 其他模板不需要参数声明
7.2.1 向模板传递返回值" class="reference-link"> 7.2.1 向模板传递返回值
如果你的控制器需要向模板传递函数返回值
public Foo getFoo() {
return dao.findOne();
}
在模板中通过result
名字来引用返回值:
@args Foo result
Foo is @foo
7.3 参考" class="reference-link"> 7.3 参考
7.4 演示项目" class="reference-link"> 7.4 演示项目
该演示项目展示了:
- 如何在项目中集成多个模板引擎
- 在开发模式下各个模板引擎对错误显示的支持
当前内容版权归 actframework.org 或其关联方所有,如需对内容或内容相关联开源项目进行关注与资助,请访问 actframework.org .