微信号:CyuyanAn

介绍:C语言C++;JAVA安卓系统软件编程,C语言编译器,C语言函数手册,C语言编程技巧,C语言视频教学,C语言考试,C语言软件开发设计,

OGNL的相关知识

2018-05-15 13:26 C语言JAVA软件编程设计

什么是OGNL?

        >>Object Graph Navigation Language

        >>开源项目,取代页面中Java脚本,简化数据访问

        >>和EL同属于表达式语言,但功能更为强大

OGNL在Struts2中做的两件事情

        >>表达式语言

                >>将表单和Struts2标签与特定的Java数据绑定起来,用来将数据移入、移除框架;

         >>类型转换

                 >>数据进入和流出框架,在页面数据的字符串类型和Java数据类型之间进行转换;

创建自定义类型转换器        

        当默认类型转换器满足不了使用的时候,创建自定义类型转换器就很必要了。

        基本步骤:

                >>继承StrutsTypeConverter抽象类

                          >>继承org.apache.struts2.util.StrutsTypeConverter类

                #将一个或多个字符串值转换为指定的类型

                public Object convertFromString(Map context,String[] val,Class to Type)

                #将指定对象转化为字符串

                public String convertToString(Map context,Object object)

例如:

public class DateConverter extends StrutsTypeConverter{

                private final DateFormat[] dfs={

                        new SimpleDateFormat("yyyy年MM月dd日"),

                        new SimpleDateFormat("yyyy.MM.dd"),

                        new SimpleDateFormat("yyyy/MM/dd"),

                        new SimpleDateFormat("yyyyMMdd"),

                        new SimpleDateFormat("yyyy-MM-dd"),

                }  ;       

                //存入时调用   

                public Object convertFromString(Map context,String[] values,Class toType){

                    String dataStr=value[0];

                    for(DateFormat df: dfs){

                        tyr{retrun df.parse(dateStr);}catch(ParseException e){continue;}

                     }

                    throw new TypeConversionException();  //异常处理实现消息输出

                }

                //取出是调用

                public String conbertToString(Map context, Object object){

                       Date date =(Date)object;

                        retrun new SimpleDateFormat("yyyy-MM-dd").formate(date); 

                }

}

另外,还需要配置自定义类型转换器,分两种情况

        >>应用于全局范围的类型转换器

                >>在src目录创建xwork-conversion.properties

                        转换类全名=类型转换器类全名                          

                        例如:    java.util.Date=cn.ssh.ch.converter.DateConberter

        >>应用于特定类的类型转换器

                   >>在特定类的相同目录下创建一个名为ClassName-conversion.properties的属性文件

                        特定类的属性名=类型转换器类全名

                        例如:    在需要转换类属性的同包中创建 timeDate=cn.ssh.ch.converter.DateConberter


处理类型转换错误

    向用户输出类型转换错误的前提条件

        >>启动StrutsConversionErrorInterceptor拦截器

            >>拦截器已经包含在defaultStack拦截器栈中

        >>Action要继承ActionSupport类

            >>实质是实现ValidationAware接口

        >>配置input结果映射

        >>页面使用Struts 2表单标签或<s:fielderror>标签

            >>Struts 2表单标签内嵌了输出错误信息功能

            >>普通HTML标签需使用<s:fielderror>标签输出转换错误


修改所有类型的转换错误信息

        >>思路

                >>修改xwork.default.invalid.fieldvalue键的值

        >>实现

                >>在struts.xml中指定资源文件的基名

                <constant name="struts.custom.i18n.resources"     value="message"/>

                >>在src目录下创建资源文件message.properties并修改键值

                xwork.default.invalid.fieldvalue=字段"{0}"的值无效


定制特定字段的类型转换错误信息

        >>思路

                >>在Action范围的资源文件中添加I18N消息键invalid.fieldvalue.属性

        >>实现

                >>在Action包下创建RegisterAction.properties,指定键值

                invalid.fieldvalue.birthday=生日转换错误


java增强for循环的原理验证

浅析非IMU模式下DML语句产生的REDO日志内容格式

oracle如何实现远程连接

VB.NET脱离visual studio用dos命令行进行编译

C/C++中有关字长与平台无关的整数类型

判断一组括号是否匹配(用栈)

Oracle/MySql/SqlServer数据库分页

Java性能调优实用技巧

水洼的数量算法 代码(C)bi'shi

提交前台table中的值到后台的几种方式

使用matched 判定条件,完成原表到目标表的数据转移

Java代码优化,常用的方法有哪些?

程序员应该知道的福利(转)

Oracle函数应用-灵活截取字符串






 
C语言JAVA软件编程设计 更多文章 重焕生机,微软开源 Windows 文件管理器 java增强for循环的原理验证 hibernate自动创建表的配置 构建dubbo分布式平台-平台功能导图 判断一组括号是否匹配(用栈)
猜您喜欢 [论文阅读]Scaling Memche at Facebook 老司机保驾护航,让你的网络安全之行多一层保障 - 冯磊 写作,找到世界上的另一个你 移动端安装包(APP)的测试用例 DTCC 2018 | 基于 Apache Kylin 的云上大数据