JSF中EL表达式之this扩展

简介:

本篇文章来自以前公司的一套jsf+seam+Hibernate的一套框架,其对jsf进行了一些改进,其中包括:EL表达式中添加this,通过jsf的渲染实现权限控制到按钮等等。JSF表达式中添加this,主要是为了在facelets页面使用this关键字引用(JSF自动查找)到当前页面对应的pojo类,详细说明见下午。因为,本文的文章是公司同事整理的,本文作者仅仅是将其分享出来,供大家参考思路,如果有什么不妥的话,请告知。

EL表达式this扩展 在业务系统中,大量页面具有大量区域是相似或者相同的,或者可能根据某些局部特征的变化具有一定的变化,jsf中通过facelet模板功能可以达到一定程度的页面重用,从而减轻开发人员编辑和拷贝一些页面代码,达到重用的目的。然而,她们具有如下限制: 1.Java语言作为一种典型的OO语言,通过抽象、继承等功能,可以大量重用已经实现或者在父类中已经存在的属性和方法等。模板技术作为一种静态加载和内容替换,无法充分利用面向对象的继承功能 2.由于Jsf/jsp框架采用视图和动作分离的模型,多个相似功能在不同的页面实现中由于页面对应点动作类不同因而必须使用复制的方法; 3.模板中使用EL表达式与后台动作类交互,这种交互是基于绝对名称的,不同的网页对应的动作类是完全不同的,因此很难重用和利用面向对象的特征。

我们需要一种新的功能,实现: 1.模板的应用特种可以参照OO的继承特种,即模板的对模板的引用可以看成一种继承,这种继承可以和java的OO是一致的 2.多个页面和多个独立java后台程序相同部分完全可以抽离出来,不依赖它们是否继承关系、只需保证他们具有相同的属性或者方法 3.动态映射功能,即在满足上述基础上可以实现页面和后台实现类的属性和方法的自动映射 4.兼容标准的EL表达式

我们将上述功能处理为“this”表达式。其功能模型为:

页面A和页面B分别引用了通用功能T,内含this相关的El表达式,通过分析处理,分别映射到对应的页面动作类的属性A.name和B.name。A和B可以从相同的基类C派生而来,只需C类实现了name属性即可,A类和B类也可以毫不相关,但是它们具有相同的属性name。

动作类和页面的一致性保证 为了有效实现this表达式,我们实现如下映射规则: 1.名称为小写方式,不管页面如何命名,对应的后台类的jsf标识符都转换为小写 2.页面和相应的后台类以相同命名方式,页面的目录转化为后台类的包名,名称通过点分隔包名,如根目录的a.xhtml对应的后台类名称为A.java,其唯一jsf标识名称为“a”,test/b.xhtml的后台类为test/B.java,其唯一jsf标识为“test.b”

“this”EL表达式算法 算法流程如下图:

目录
相关文章
|
存储 前端开发 数据库连接
自定义MVC框架(框架实现)
自定义MVC框架(框架实现)
82 0
自定义MVC框架(框架实现)
|
8月前
|
前端开发 安全 Java
Spring EL表达式:概念、特性与应用深入解析
Spring EL表达式:概念、特性与应用深入解析
|
9月前
|
JSON 前端开发 JavaScript
JAVAEE框架技术之5-springMVC参数绑定和异步交互
JAVAEE框架技术之5-springMVC参数绑定和异步交互
90 0
JAVAEE框架技术之5-springMVC参数绑定和异步交互
|
9月前
|
XML Java 数据格式
演示spring AOP的切入表达式重用和优先级问题以及怎么实现基于xml的AOP
演示spring AOP的切入表达式重用和优先级问题以及怎么实现基于xml的AOP
80 0
|
设计模式 前端开发 JavaScript
自定义MVC框架(原理)
自定义MVC框架(原理)
59 0
|
存储 设计模式 前端开发
自定义MVC框架原理
自定义MVC框架原理
80 0
struts2中获取作用域的2种方式,RequestAware
struts2中获取作用域的2种方式,RequestAware
101 0
struts2中获取作用域的2种方式,RequestAware
|
缓存 自然语言处理 安全
Spring 核心特性之表达式(SpEL)
前言 Spring Framework 主要有 9 个核心特性,包括 IoC 容器、事件、资源、国际化、校验、数据绑定、类型转换、表达式以及 AOP。可以说,表达式是最没有存在感的核心特性了,用户直接使用的场景实在太少,这也是我一直没有提及它的原因。不过项目中确实有使用到它的地方,恰好最近整理 Spring 核心特性,为了知识结构完整性姑且总结一篇。
341 0
|
存储 Java Apache
Java Web之Struts2高级技术的应用(OGNL、标签库、拦截器、数据验证)
Java Web之Struts2高级技术的应用(OGNL、标签库、拦截器、数据验证)
202 0
Java Web之Struts2高级技术的应用(OGNL、标签库、拦截器、数据验证)
|
前端开发 Java API
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
Spring MVC框架:第二章:视图解析器和@RequestMapping注解使用在类级别及获取原生Servlet API对象
293 0