-
Notifications
You must be signed in to change notification settings - Fork 21
扩展etmvc的视图
shuzheng edited this page Aug 13, 2015
·
1 revision
etmvc内置了多种常用的视图,每种视图都有对应的renderer对象,视图对象中通过加上@ViewRendererClass注解将renderer对象关联起来。比如JspView有相应的JspViewRenderer,JsonView有对应的JsonViewRenderer。
如果要使用自定义视图,则可以扩展视图,扩展视图是很简单的事情,我们需要做二件事情:一是定义视图对象,二是定义renderer对象。
假如我们要来定义一个JavaScriptView视图,用于向页面输出并执行一段JavaScript代码。首先定义视图对象,视图对象建议继承View对象:
@ViewRendererClass(JavaScriptViewRenderer.class)
public class JavaScriptView extends View{
private String js;
public JavaScriptView(String js){
this.js = js;
}
public String getJs() {
return js;
}
public void setJs(String js) {
this.js = js;
}
}我们看到,视图对象仅是一个定义了需要的数据载体,其渲染输出是通过renderer对象完成的。下面看来一下renderer对象的定义:
public class JavaScriptViewRenderer extends AbstractViewRenderer<JavaScriptView>{
public void renderView(JavaScriptView view, ViewContext context) throws Exception{
PrintWriter out = context.getResponse().getWriter();
out.print("<script>"+view.getJs()+"</script>");
out.close();
}
}renderer对象扩展了AbstractViewRenderer ,视图的渲染就是通过renderView方法实现的。
好了,自定义的JavaScriptView扩展完成了,我们来看看怎样使用:
public class TestController extends ApplicationController{
public View jstest(){
JavaScriptView view = new JavaScriptView("alert('abc');");
return view;
}
}我们在控制器中定义一个Action方法,只要将该方法的返回类型设为JavaScriptView就行了。
使用教程
- etmvc框架介绍
- Hello,World经典示例
- 关于etmvc的配置
- 理解并使用控制器
- Action方法和控制器环境
- 关于etmvc的视图
- 扩展etmvc的视图
- 利用etmvc中的模型绑定简化Action方法的编写
- ORM-ActiveRecord基础
- 利用etmvc编写用户管理小例子
- ActiveRecord中同时访问多个数据库
- ActiveRecord中的关联
- etmvc中进行上传和下载
- etmvc和extjs结合分页例子
- etmvc的过滤器基础
- ActiveRecord中集成spring
- ActiveRecord中使用事务
- etmvc中使用环绕过滤器
- ActiveRecord中的数据类型映射
- ActiveRecord中的回调方法
- etmvc框架中的插件
- etmvc框架对URL路由的支持
- etmvc中使用环绕过滤器处理异常
- etmvc中的国际化处理
- etmvc框架集成spring