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表达式算法 算法流程如下图:

目录
相关文章
|
云安全 安全 网络安全
|
6天前
|
JavaScript 安全 前端开发
Nodejs Brotli decoder 代码执行漏洞 (CVE-2026-111497)10629
Node.js发布安全更新修复Brotli解码器高危RCE漏洞(CVE-2026-111497),建议受影响版本用户立即升级。
1969 1
|
12天前
|
人工智能 API 开发工具
DeepSeek Harness 神插件:白嫖 13 家大厂模型
`dsh-our-free-model` 是 DeepSeek Harness 神级插件:零配置、零API Key、零账号,聚合13家大厂免费模型(含DeepSeek V4.1 Flash、Kimi K3等),支持本地网关、用量看板与自动降级,真正实现“白嫖即用”。
2039 40
|
9天前
|
Web App开发 人工智能 前端开发
2026 年 AI 浏览器怎么选?Ego Lite、Tabbit、Chrome DevTools MCP 深度对比,开发者到底该用哪个?
2026年AI浏览器选型指南:Ego Lite专注多Agent协同(Mac优先),Tabbit国产首选,原生支持Windows与Codex控制;Chrome DevTools MCP非浏览器而是开发者利器,深度集成Console/Network/Performance调试能力,让AI真正“看懂并验证”前端代码。
1332 3
|
13天前
|
JSON 程序员 数据格式
最新版Notepad++下载、安装、配置保姆级教程(附官网安装包)
Notepad++ 是一款免费开源、轻量快速的 Windows 文本编辑器,支持多标签、语法高亮、代码折叠与宏录制,体积小、启动快、资源占用低,兼容 x64/x32/ARM 架构,是程序员和文字工作者的高效利器。
2495 0
|
6天前
|
安全 应用服务中间件 Go
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
PHP2Shell 双 RCE 已遭在野利用:WordPress、Drupal 全在射程内,nginx 其实另有洞。拆成因与修复顺序
PHP2Shell 漏洞拆解:WordPress 与 nginx 为何中招
|
13天前
|
安全 Linux 芯片
【万字长文】Ollama下载、安装、配置、使用保姆级教程(2026最新图解)
Ollama 是一款免费开源的本地大模型运行工具,支持 DeepSeek、Qwen 等主流模型,一条命令即可下载运行。2026 最新版 v0.35.1 官方安装包(1.47GB)已提供国内直连下载,纯本地、离线可用、无广告、无隐私泄露风险。
1251 5
|
6天前
|
开发者 索引
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用
Open Plugin Market 是一个开放插件索引平台,收录800+优质DSH插件,支持分类浏览、智能推荐与随机发现。无需安装市场,粘贴索引地址即可一键接入,网页版直访 dshopen.org,助力小开发者被看见。(239字)
1371 1
DeepSeekHarness大肥鱼自带插件市场了?加个地址就能用
|
5天前
|
安全 程序员 应用服务中间件
PHP 被曝两大致命漏洞,请所有程序员抓紧做这件事!
PHP 官方发布了紧急安全更新,一口气修复了两个严重漏洞。如果网站和服务器用了 PHP 应该怎么处理?漏洞的原理是什么?本文给你讲清楚
618 0

热门文章

最新文章