Struts2自定义类型转换器

Struts2自定义类型转换器
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

 
}




你可能感兴趣的:(Struts2自定义类型转换器)