由于stuts之后自动封装基本类型的信息如int date string 等,如果需要自动包装自定义类型,则需要自定义转换的类:
package com.sdibt.lcc.converter;
import java.util.Map;
import java.util.StringTokenizer;
import com.sdibt.lcc.member.domain.Member;
import ognl.DefaultTypeConverter;
public class MemberConverter extends DefaultTypeConverter {
@Override
public Object convertValue(Map context, Object value, Class toType) {
if (Member.class==toType) {
String[] str = (String[])value;
String firstValue = str[0];//取得页面提交的值
StringTokenizer st = new StringTokenizer(firstValue,";");
String accountId = st.nextToken();
String name = st.nextToken();
String email=st.nextToken();
String password=st.nextToken();
String identy=st.nextToken();
String image=st.nextToken();
Member member=new Member();
member.setAccountId(accountId);
member.setName(name);
member.setEmail(email);
member.setPassword(password);
member.setIdenty(identy);
member.setImage(image);
System.out.println(member.getAccountId());
return member;
}else if (toType==String.class){
Member vMember=(Member)value;
String[] strArray = new String[]{vMember.getAccountId(),vMember.getName(),vMember.getEmail(),vMember.getPassword(),vMember.getIdenty(),vMember.getImage()};
return strArray;
}
else {
throw new RuntimeException("dididiidi");
}
}
}
在此之后还要用配置问件声明一下:
全局声明:在根目录下建如下文件名
com.sdibt.lcc.member.domain.Member=com.sdibt.lcc.converter.MemberConverter
才可以生效