URL 매개 변수를 통해 객체를 전달하려면 직렬화로 문자열로 변환 한 다음 역 직렬화로 객체를 가져옵니다. 여기직렬화 : URL 매개 변수로 객체 전달 및 값 추출
내가 무엇을했는지 있습니다 :의 URL 매개 변수를 만드는 동안
:
SerializationUtils.getAsString(localMarketHomeDTO.getPointInTime()); //serializing it
값의 추출시 : localMarketHomeDTO.getPointInTime()
이 유형 java.util.Date
이다 여기
SerializationUtils.getAsObject(paramValue.toString(),Class.forName("java.util.Date")); //deserializing it
.
public class SerializationUtils{
private SerializationUtils(){
}
public static <T extends Serializable> String getAsString(T object) throws Exception {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ObjectOutputStream objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(object);
objectOutputStream.flush();
return byteArrayOutputStream.toString("UTF-8");
}
public static <T> T getAsObject(String string, Class<T> clazz) throws Exception {
byte[] byteArray = string.getBytes("UTF-8");
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
T object = clazz.cast(objectInputStream.readObject());
return object;
}
}
하지만 예외가 오전 :
클래스 SerializationUtils
은
'java.util.Date; local class incompatible: stream classdesc serialVersionUID = 7523895402267505689, local class serialVersionUID = 7523967970034938905' due to 'java.io.InvalidClassException: java.util.Date; local class incompatible: stream classdesc serialVersionUID = 7523895402267505689, local class serialVersionUID = 7523967970034938905'
가 어떻게이 문제를 해결할 수
?
UTF-8없이 시도했지만 행운이 없습니다. –
UTF-8이 없습니까? 어떤 기본 문자 집합이 작동되는 것처럼? 훨씬 좋을 것 같지 않습니다. 당신은 Base64 또는 이와 유사한 인코딩해야합니다. –