本以为struts2的验证框架可以抛开struts1.x的验证鸡肋,没想到一样不尽如人意,仍然要搞N多XML配置来配置去。。。十分影响开发效率。索性把以前用过的超级表单验证JS拿来用。
JS的代码我就不贴了,附件带着(不是我写的,拿来主义。。。)----很强大,通过正则表达式默认支持几乎所有的表单元素,这样还不够,我们还可以自己写正则表达式来让它验证。。。SO。。。几乎能满足您的任何需求,太强大了 :D
FE:
java 代码
- 〈 input "Name" dataType="Chinese" msg="真实姓名只允许中文">
======================================================================
但是这个JS需要很多额外的属性来支持,比如上面的 dataType 和 msg 。这难不倒我们,只要我们在STRUTS的UI标签里面加上一个属性,让STRUTS不解析这个属性直接把属性里的内容原样输出就能满足我们的需求。
FE:
java 代码
- 〈s:textarea name="chat.code" cdata=" require='false' dataType='Chinese' msg='只允许中文" label="code"/>
只要让STRUTS标签解析别的属性,原样输出 cdata 属性即可。
======================================================================
让我们开始改造吧,很简单:先下个STRUTS2原码,把STRUTS2 JAR包用RAR解开里面的TLD和template下面会用到。
第一步:在struts-tags.tld中所有UI标签里加上 cdata 属性。--这个文件在JAR包的META-INF目录下
xml 代码
- <attribute>
- <name> cdata name>
- <required>falserequired>
- <rtexprvalue>truertexprvalue>
- <description>description>
- attribute>
第二步:在BEAN里加上这个属性,需要改造的文件有两个
1)org.apache.struts2.components. UIBean.java
java 代码
-
-
- protected String cdata;
- public void setCdata(String cdata) {
- this.cdata = cdata;
- }
-
- if (cdata != null) {
- addParameter("cdata", findString(cdata));
- }
2)org.apache.struts2.views.jsp.ui. AbstractUITag.java
java 代码
-
-
- protected String cdata;
- public void setCdata(String cdata) {
- this.cdata = cdata;
- }
-
- uiBean.setCdata(cdata);
把新改的两个类和struts-tags.tld覆盖过去然后重新打包,当然最简单的是用RAR打开STRUTS的JAR包直接把这3个文件按目录覆盖过去。
好了,经过上面这两步STRUTS就能识别CDATA标签,并能读取这个标签数据把数据放到MAP中等待freemarker 来解析了。
第三步:创建自己的模板
在classes 下建立 template 目录,再在下面建 mytheme 目录。
1) 加入 theme.properties 文件 文件内容 :
java 代码
(这个就不多解释了,网上资料很多)
2) 加入response-cdata.ftl ,用来原样输出cdata,很简单,文件内容:
java 代码
- <#if parameters.cdata?exists>
- ${parameters.cdata} <#rt/>
- if>
3)重写UI标签(其实也不是重写,只是把SIMPLE目录下的标签拿过来改该:)),以textarea标签为例。STRUTS 模板的 simple 目录下把textarea.ftl文件拷到我们的 mytheme 目录下打开。找个合适的位置(这个应该会找吧) 把这句
<#include "/${parameters.templateDir}/mytheme/response-cdata.ftl" /> 加上就OK啦。
======================================================================
大功告成啦,赶快测试一下,别忘了在JSP里引用一下 js(也可以改一下 head.ftl。。。),也别忘了指定使用mytheme模板(也可以建立struts. Properties把默认模板改成mytheme)
分享到:
相关推荐
- **Struts2**: Struts2采用了更加灵活的验证机制,除了支持传统的ActionForm验证方式外,还引入了XWork验证框架,支持更为复杂的验证规则定义。这种方式使得验证逻辑可以独立于业务逻辑之外,提高了代码的可读性...
在表单处理方面,Struts2支持多种高级技巧,如自动填充表单字段、动态生成表单元素等。 ##### 4.4 Struts2的扩展与定制 为了满足不同的开发需求,Struts2允许开发者对其进行扩展和定制。这包括自定义拦截器、结果...
- **更丰富的表单支持:**STRUTS2 提供了更强大的表单和数据绑定机制,包括对动态类型的表单数据的支持。 - **支持多种数据源:**除了传统的 Action Form,STRUTS2 还支持 ModelDriven 和 POJO 数据源。 **5. ...
- **Struts2提供了一组丰富的表单标签**,如`<s:textfield>`、`<s:password>`、`<s:submit>`等,这些标签可以自动绑定模型属性、验证数据、生成错误消息等。 #### 6. Struts2的文件上传与下载 - **文件上传**:...
5. **与Struts框架的比较**:Struts的验证机制基于XML配置,可能需要较多的设置工作。相比之下,这个js框架可能更注重简洁的API和JSON配置,减少开发者的工作量。 6. **中文文档和支持**:对于中文开发者来说,有...
- **配置简化**:Struts2支持基于注解的配置,减少了XML配置的负担。 - **性能优化**:Struts2对性能进行了优化,提高了并发处理能力。 - **易用性提升**:提供了更多内置标签和插件,简化了开发过程。 #### 四、...
- **易用性**:Struts2简化了许多常见的Web开发任务,如表单处理、文件上传、异常处理等,使开发者能够专注于业务逻辑的实现,而不是繁琐的框架配置。 - **社区支持**:Struts2有一个活跃的社区,提供了丰富的文档、...
根据给定的文件信息,以下是对Struts2学习笔记中...总之,Struts2.x是基于MVC模式的一个高度灵活、易用的Java Web开发框架,通过一系列的技术创新,极大地简化了Web应用的开发过程,同时也提升了应用的性能和可维护性。
- **易用性**:Struts2的表单标签库和拦截器机制极大地简化了Web开发过程。 - **可扩展性**:Struts2的设计允许轻松地扩展和集成其他框架,如Spring和Hibernate。 - **社区支持**:作为Apache项目的一部分,Struts2...
Struts2框架是Java Web开发中的一个流行MVC(Model-View-Controller)框架,它提供了丰富的功能,包括处理表单提交、文件上传等。在Struts2中,文件上传是一个常见的需求,可以帮助用户从客户端上传文件到服务器。...
此外,Struts2还提供了Ajax标签,用于支持异步JavaScript和XML的交互,增强用户体验。 ValueStack是Struts2框架中的核心概念,它是一个对象栈,包含了Action对象、模型对象以及不同作用域的固定名称对象(如#...
1. **配置方式**: Struts1主要通过XML配置,而Struts2支持XML和注解混合配置,更易用且灵活。 2. **拦截器**: Struts2引入拦截器,使得业务逻辑和控制流程更易于分离。 3. **视图表示**: Struts2使用OGNL作为表达式...
2. **配置方式**:Struts1.x主要依赖XML配置,而Struts2支持XML和注解混合配置,更加灵活。 3. **数据绑定**:Struts1.x的数据绑定相对复杂,需要手动设置属性,Struts2使用OGNL简化了这一过程。 4. **异常处理**...
Struts2支持多种结果类型,它们决定了Action执行后页面的流转方向。常见的几种结果类型包括: 1. **SUCCESS**:表示操作成功,通常转向另一个页面或者跳转到某个Action。 2. **ERROR**:表示操作失败,通常用于显示...
Struts2支持使用Tiles框架进行页面布局,使视图更加模块化。 在实际开发中,Struts2的拦截器(Interceptors)扮演着重要角色。拦截器是预定义或自定义的逻辑,可以在Action执行前后运行,如日志记录、权限验证等。...
通过实践,可以学习到Struts2的拦截器、结果类型、表单验证等特性,Hibernate的实体管理、会话工厂、查询语言(HQL)等概念,以及MySQL的基本操作和数据库设计原则。同时,还能提升对MVC模式和Java Web开发流程的...
8. **注解支持**:从Struts2.1版本开始,框架引入了注解支持,开发者可以使用注解代替XML配置,简化配置文件,提高开发效率。 9. **类型转换**:Struts2自动处理表单数据的类型转换,如将字符串转换为整型、日期等...