posts - 68, comments - 19, trackbacks - 0, articles - 1

Struts2自定义类型转换器

Posted on 2012-02-04 17:03 viery 阅读(309) 评论(0)  编辑  收藏
struts2可以处理很多java类型,对于自定义的类型,如坐标(x,y)作为一个对象这种类型,客户端与服务器端之间的存储和显示,可以用自定义类型转换器转换。
首先,需要构造一个strus2项目,将相关的包引入。编写输入页面的jsp:
 <s:form action="conventer">
  
<s:textfield name="zuobiao" label="zuobiao"/>
  
<s:submit label="submit"/>
  
</s:form>
和显示结果的jsp:
<s:property value="zuobiao"/>

编写Zuobiao实体类
package org.vle.domain;

public class Zuobiao {
    
    
private int x;
    
private int y;
    
public int getX() {
        
return x;
    }

    
public void setX(int x) {
        
this.x = x;
    }

    
public int getY() {
        
return y;
    }

    
public void setY(int y) {
        
this.y = y;
    }

}


和ZuobiaoAction类

public class ConventerAction extends ActionSupport {
 
 private Zuobiao zuobiao;

 public Zuobiao getZuobiao() {
  return zuobiao;
 }

 public void setZuobiao(Zuobiao zuobiao) {
  this.zuobiao = zuobiao;
 }

 @Override
 public String execute() throws Exception {
  // TODO Auto-generated method stub
  return SUCCESS;
 }
 

  
 }

然后编辑自定义转换类

package com.vle.conventer;

import java.lang.reflect.Member;
import java.util.Map;

import ognl.DefaultTypeConverter;

import org.vle.domain.Zuobiao;

public class ZuobiaoConventer extends DefaultTypeConverter {

 @Override
 public Object convertValue(Map context, Object target, Member member,
   String propertyName, Object value, Class toType) {
  // TODO Auto-generated method stub
  if(Zuobiao.class==toType){
   String files[]=(String[])value;
   String para[]=files[0].split(",");
   Zuobiao z=new Zuobiao();
   z.setX(Integer.parseInt(para[0]));
   z.setY(Integer.parseInt(para[1]));
   return  z;
  }
  if(String.class==toType){
   Zuobiao z=(Zuobiao)value;
   String s="[x="+z.getX()+",y="+z.getY()+"]";
   return s;
  }
  return null;
 }
 
 最后将自定义编辑类编写属性文件注册
zuobiao=com.vle.conventer.ZuobiaoConventer

 
}





只有注册用户登录后才能发表评论。


网站导航: