ONLG表达式中做地址转换器

来源:互联网 发布:php用iis和apache 编辑:程序博客网 时间:2024/05/17 08:23
1.地址类Address.java(其中需要重写toString()方法)
package test.model;
//地址类
public class Address {
private String province;
private String city;
private String street;
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getStreet() {
return street;
}
public void setStreet(String street) {
this.street = street;
}

//重新toString方法
public String toString(){

return province + "-" + city + "-" + street ;
}
}


2.地址类型转换器类AddressConverter.java


package test.ognl;
import java.util.Map;
import org.apache.struts2.util.StrutsTypeConverter;
import test.model.Address;


//地址类型转换器,需要继承StrutsTypeConverter类,重写其中的convertFromString方法和convertToString方法
public class AddressConverter extends  {
StrutsTypeConverter
@Override
//将字符串转换成地址对象
public Object convertFromString(Map context, String[] values, Class toClass) {

//首先做健壮性处理
if(values != null && values.length > 0 ){
//取字符串数组中的第0个元素
String str = values[0];
//将字符串拆开,用split方法,返回值为数据
String[] arr = str.split("-");
if(arr != null && arr.length > 2){
Address a = new Address();
a.setProvince(arr[0]);
a.setCity(arr[1]);
a.setStreet(arr[2]);
return a;
}
}
return null;
}


@Override
//将地址对象转换成字符串信息
public String convertToString(Map context, Object o) {

//判断o是否为地址对象,用instanceof方法
if(o instanceof Address){
return o.toString();
}
return null;
}
}
3. 在局部配置文件OgnlAction.properties中需要做如下配置
   #comAddress配置地址转换器
   comAddress=test.ognl.AddressConverter
   也可以定义全局配置文件xwork.properties(必须放在classpath目录下,即src的根目录下)
     #配置全局类型转换器,文件名称命名格式为xwork-conversion.properties
     #配置类的转换器格式:完整类名=转换器的完整类名
test.model.Address=test.ognl.AddressConverter




4.在OgnlAction.java这样写:
package test.ognl;


import java.util.List;
import java.util.Map;


import org.apache.struts2.interceptor.SessionAware;


import test.model.Address;


import com.opensymphony.xwork2.ActionSupport;
//Ognl action
public class OgnlAction extends ActionSupport{
private static final long serialVersionUID = -4309645221892241670L;

//公司地址
private Address comAddress;

public Address getComAddress() {
return comAddress;
}


public void setComAddress(Address comAddress) {
this.comAddress = comAddress;
}




public String reg(){
return "success";
}

public String toRegView(){
return "regView";
}
}


5.在视图显示层加上显示<s:textfield name="comAddress" label="comAddress"/>
0 0
原创粉丝点击