悟生慧

 

Action的类型转换器

类型转换器

局部类型转换器 对某个Action

全局类型转换器 所有Action的某个类型起作用


com.opensymphony.xwork2.conversion.impl.DefaultTypeConverter;


public class DateTypeConverter extends DefaultTypeConverter{
   public Object convertValue(Map<String,Object> context,Object value, Class toType)
   {
         SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
         try
         {
             if(tpType==Date.Class){//当字符串向Date雷翔转换时
                  String[] params=(String[]) Value; //Request.getParameterValues()
              }
         }
           return super.convertValue(context,Value,toType);
   }
}

HelloWorldAction-conversion.properties
局部类型转换器:
第一步:定义一个类型转换器 继承这个类DefaultTypeCOnverter后重写这个方法
第二部:注册 仅仅对Action中的属性进行转换就注册一个局部类型转换器 取名规则 要转换的Action的类名加-conversion.properties固定写法
内容当然是固定的属性类型 如Action中的属性 private Date birthday; 那么属性文件中就 birthday=cn.itcast.type.converter.DateTypeConverter 即包名.类名 
全局类型转换器:
第一步:定义一个类型转换器
在WEB-INF/classes下放置xwork-conversion.properties文件.
文件中的内容为:
待转换的类型=类型转换器的全类名

===========================================================================================================

访问或添加request/session/application属性

ActionContext ctx = ActionContext.getContext();
ctx.getApplication().put("app","应用范围");//往ServletContext里放入app
ctx.getSession().put("ses","session范围");//往session里放入ses
ctx.put("req","request范围");//往request里放入req
ctx.put("names",Arrays.asList("老张","老黎","老方"));
return "message";


HttpServletRequest request = ServletActionContext.getRequest();
ServletContext servletContext = ServletActionContext.getServletContext();
request.setAttribute("req","请求范围属性");
request.getSession().setAttribute("ses","会话范围属性");
servletContext.setAttribute("app","应用范围属性");


前台页面取值
${applicationScope.app}
${sessionScope.ses}
${requestScope.req}
获取HttpServletRequest / HttpSession /ServletContext/ HttpServletResponse对象

方法一:通过ServletActionContext类直接获取

方法二:实现指定接口,有struts框架运行时注入:


在学习一下 如何加JSTL标签 Jar包
在下载的opensoftlib文件下struts-1.3.8-lib下找jstl.jar和standard.jar版本是1.1版本拷贝到项目的lib下
在页面上引入JSTL标签 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>1.1版本
页面呈现的迭代方式
<c:forEach items="${names}" var="name">
    ${name} <br/>
</c:froEach>

ognl标签可以不学习 但是表单标签要做数据回显通过EL表达式也可以做 主要还是学习表单标签


 

posted on 2011-07-05 21:55  悟生慧  阅读(2189)  评论(0编辑  收藏  举报

导航