Struts2中OGNL的使用(Java高级框架)

1.OGNL:对象图形导航语言
(1)作用:通过对象直接访问其属性值
(2)在框架中的应用: <1>将请求的数据保存到action的属性中
<2>将属性值从action中提取出来
<3>实现请求数据到指定类型数据的类型转换
(3)类型转换器的分类:<1>内置类型转换器 <2>自定义类型转换器
<1>内置类型转换器:
注:当接受多条同名数据时使用集合或数组接受,但要求页面中控件的名称要相同
示例:action中接收数据
private List list;
private String[] names;
<2>自定义类型转换器:
步骤:1.定义转换器类,该类继承StrutsTypeConverter,重写方法
//将页面发送过来的字符串转换成对应的类型(在给action中属性赋值前调用)
public Object convertFromString(Map context, String[] values, Class toClass) {}

//将对应的类型转换成字符串
@Override
public String convertToString(Map context, Object o) {}
        2.创建属性文件,告诉程序哪些类型需要执行自定义转换器
          文件名:src下创建:xwork-conversion.properties文件
           内容: 转换类=自定义转换器的完整路径
        示例:
          java.util.Date=util.myConverter;//表示请求过程中date类型的值需要执行myConverter中的转换

<3>如果转换依旧失败,在页面显示错误信息
  前提条件:(1)请求中使用defaultStack拦截器栈
           (2)action要继承ActionSupport
            (3)配置input结果响应
           (4)在页面中使用<s:fieldError/>显示错误信息
  如何自定义错误信息:
       //1.修改struts.xml文件
       <constant name="struts.custom.i18n.resources" value="属性文件的名字"/>
      //2.在属性文件中修改错误提示信息
       xwork.default.invalid.fieldvalue=错误信息

———————————————ognl(数据的流入和流出):
2.使用ognl保存页面中的数据到action中
接收的类型:基本数据类型(8种)和引用数据类型(类,数组,接口)
action中接收客户端数据的格式:对象,集合,数组
对于数组和集合接收数据:要求页面控件的名字要相同,map集合命名时:
3.ognl中保存数据的方式:
<1>值栈(ValueStack):默认保存方式
体现:action中定义的属性以及属性值都保存在值栈
值栈访问数据:
<2>非值栈:比如保存在request,session,application中的数据
非值栈数据的访问:
示例:
session.put(“u”,user);

补充:
request: #request.key
session: #session.key
application: #application.key

猜你喜欢

转载自blog.csdn.net/weixin_43020203/article/details/81874080