CommonTemplate(
http://www.commontemplate.org)已初步完成PageContext, BodyContent, JspFragment, JspWriter 等的适配实现,以及Tag, IterationTag, BodyTag, SampleTag 等的适配回调。
(题外话:JspTagLib的接口不太友好,简单的树遍历做了很多绕弯的接口协议)
tld的引入方式也作了相应调整。
最初的想法是在页面上引入tld:
$taglib{"struts.tld"}
$checkbox{name: "allow"}
但在项目中发现,大家并不喜欢为某个页面单独加载tld,
通常会把所有tld放在一个commons.jsp中,然后inclide进来,
即然如此,放到配置中使用会更方便,并且不需要重复加载解析tld,
另外,页面开发者也不应该关注标签的定义。
现在改成将struts2的相关标签的配置放到:
org/commontemplate/tools/web/struts2/commontemplate.properties
使用时只需继承这个配置(参见配置中@extends的使用)。
配置内容如:
directive{checkbox}=org.commontemplate.standard.directive.taglib.TagLineDirectiveAdapter()
directive{checkbox}.tagClass=org.apache.struts2.views.jsp.ui.CheckboxTag
这样就可以在页面直接使用:
$checkbox{name: "allow"}
现在唯一存在问题的是:
在适配PageContext时,需要相关servlet(jsp页面的编译结果引用), request, response等信息,
而在模板上下文是拿不到的,这里需要一个传递机制,并且保证侵入性较小,
已看过FreeMarker的实现,它将request,response作为一个变量放在模板上下文中,然后取出使用。
先暂且也用相似方式实现,但不放入VariableStorage,而放到ObjectStorage中传递。
等想到更好的办法再重构。
此功能完成后将发布新版本。
希望得到更多意见。
分享到:
相关推荐
定制开发软件信创适配方式及适配费用计取标准 信创适配是指根据政府信息系统的要求,对定制开发软件进行改造和升级,以满足信创标准的要求。信创适配的过程包括服务器操作系统适配、中间件适配、数据库适配和浏览器...
Flutter 不同终端适配方案 Flutter 是一个跨平台的移动应用框架,能够在 iOS 和 Android 设备上运行。但是,随着不同设备的出现,屏幕尺寸和分辨率的差异也变得越来越大。因此,如何让 Flutter 应用程序在不同终端...
// 只需要在要适配的控制器上加下面3句话,即可完成自动适配 #pragma mark- AutoAjustAttag - (void)dealloc{ // 销毁参照 [self.view removeRelation]; } - (void)viewWillAppear:(BOOL)animated{ // 自动...
基于原生JavaScript完成的网页端2048游戏,适配移动端,绑定键盘和鼠标滑动事件 基于原生JavaScript完成的网页端2048游戏,适配移动端,绑定键盘和鼠标滑动事件 基于原生JavaScript完成的网页端2048游戏,适配移动端...
一切配置完成后,启动项目,activiti 将自动创建表结构,实现对达梦数据库的适配。 activiti 适配达梦数据库的优点 activiti 适配达梦数据库可以满足中国用户的需求,提供了一个国产数据库的解决方案。同时,...
一行代码完成Android 7 FileProvider适配Demo 通过FileProvider7这个类完成uri的获取即可,例如: FileProvider7.getUriForFile FileProvider7.setIntentDataAndType FileProvider7.setIntentData
标题中的“机智云设备管理平台GDMS与飞腾腾云S2500处理器完成兼容适配认证”指的是机智云物联网公司的设备管理平台GDMS已经成功地在飞腾信息技术有限公司的腾云S2500处理器上进行了兼容性和稳定性测试。这意味着GDMS...
2. **驱动安装**:从压缩包中提取并运行驱动程序安装文件,按照向导提示完成安装过程。这一步骤可能需要重启计算机以使驱动生效。 3. **系统配置**:在设备管理器中确认驱动已安装成功,并设置相关参数,如电机类型...
终端适配平台国产化替代解决方案 本资源主要介绍了终端适配平台国产化替代解决方案,旨在帮助 A 单位实现信息系统的国产化替代。该解决方案的目标是采用基于国产软硬件平台、外设及应用软件,替代基于国外 CPU、...
通过不同的限定区分不同的平台资源,Android 在使用资源的时候会优先选择满足本平台限定的资源,再找最接近条件的,再找默认(即不加限定),通过选择适合当前平台的资源来完成不同平台的适配。 Android 提供了两...
4. **测试与调试**:完成配置后,进行详尽的测试以确保Nacos能正常读写瀚高数据库。这包括启动Nacos服务、创建和查询数据、执行事务操作等,同时关注日志输出,排查可能出现的错误。 5. **安全与权限**:考虑到...
在iOS开发领域,"iPhone和iPad适配"是一个至关重要的主题,因为它涉及到应用程序在不同设备上的兼容性和用户体验。为了确保应用能在iPhone和iPad上顺畅运行并提供一致的体验,开发者需要考虑多方面的因素,包括屏幕...
适配不同的屏幕大小,也被称为响应式设计,是前端开发中的一项核心技能。本文着重介绍了如何使用JavaScript(简称js)来实现这一目标,从而确保网页内容在不同设备上展现得恰到好处。 首先,我们需要了解什么是适配...
React Native屏幕适配工具是为了解决在跨平台的移动应用开发中,由于不同设备屏幕尺寸和分辨率差异导致的布局显示问题。React Native作为一个流行的JavaScript框架,允许开发者使用JavaScript和React来构建原生的iOS...
密度适配通常通过使用不同密度的资源文件夹(如`drawable-mdpi`、`drawable-hdpi`)来完成,而屏幕大小适配可以通过使用`layout-sw600dp`、`layout-sw720dp`等文件夹来区分平板和大屏手机。 此外,Android还提供了`...
相关博客:【android学习开源项目之AndroidAutoSize】AndroidAutoSize和DialogFragment的适配 https://blog.csdn.net/ljb568838953/article/details/103906449; 本demo的知识点:1.AndroidAutoSize 的使用(今日...
Nacos是阿里巴巴开源的一款分布式服务治理和配置中心的框架,其2.2.3版本针对DM数据库进行了适配,这使得在使用DM数据库的环境中,Nacos能够更好地发挥其服务发现和服务配置的功能。DM(Distributed MySQL)是阿里云...
Vue3 移动端适配解决方案是针对现代前端框架 Vue3 的一项技术实践,旨在确保在不同设备和屏幕尺寸上提供良好的用户体验。Vue3 提供了更强大的功能和更高的性能,但移动端适配是一个挑战,因为移动设备的屏幕尺寸、...
在移动端开发领域,适配问题是一项至关重要的任务,特别是在手机和平板设备上,由于屏幕尺寸、分辨率和像素密度的多样性,使得开发者需要采用特定的策略来确保应用或网站在不同设备上都能提供良好的用户体验。...