posts - 1,  comments - 0,  trackbacks - 0
  2008年1月29日
这几天学习了一下Struts2 在看了Converter的时候自己做了个例子
在这里把这个过程记录下来 已备以后自己阅读和提供给需要学习的朋友们。
Converter 转换器主要用于对象之间的转换  MAX 在他的BLOG 演示了如何把一个STRING 和一个LOCAL对象之间的转换。
我自己做了个测试的例子 是 模拟用户登陆 把 用户名和密码 2个String 通过转换器 转换成一个自定义的USER 对象 给ACTION 用
功能上是多余的 纯粹为了技术研究。

 

package struts2.converter;

import java.util.Map;

import ognl.DefaultTypeConverter;
import struts2.vo.User;

public class UserConverter extends DefaultTypeConverter {

 @Override
 
public Object convertValue(Map context, Object value, Class toType) {
  System.out.println(
"---------------------------");
  
if (toType == User.class{

   String[] par 
= (String[]) value;
   String name 
= par[0];
   String password 
= par[1];
   System.out.println(name 
+ "--------" + password + "    ");
   
return new User(name, password);

  }

  
else if (toType == String.class{
   System.out.println(
"sadfasfasdfs");

  }


  
return null;
 }

}



JSP
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="s" uri="/struts-tags"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
    
<head>
        
<title>Login</title>
    
</head>
    
<body>
        
<h3>
            Login
        
</h3>
        
<s:form action="Login">
            Name: 
<s:textfield name="user" />
            PassWord: 
<s:password name="user" />
            
<s:submit />
        
</s:form>
    
</body>
</html>


简单的ACTION 和CONVERTER 配置这里就不多说了 要了解的可以去看MAX的文章 那里很详细

这里要说的的 2个字段的name属性 我用的都是USER 这样 在CONVERTER里面的时候就能取出来NEW 一个USER

在测试过成中 发现了一个功能
如果用OGNL
Name: <s:textfield name="%{'user.name'}" />
            PassWord: 
<s:password name="%{'user.password'}" />

这样写的话  则转换器失效了 可以直接访问到ACTION  ACTION 通过拦截器 把2个字段 通过USER 的构造器 构造USER 对象供ACTION调用。

有事情 不说了 !!!!!!
posted @ 2008-01-29 19:00 Winter 阅读(1893) | 评论 (0)编辑 收藏
仅列出标题