jaxb 에서 자바 util.Date 에 대한 처리

3208 단어 자바JAXB
JAXB 는 JAVA OBJECT 를 XML 로 바 꾸 는 좋 은 물건 으로 최근 JAXB 에서 자바 util.Date 의 전환 에 대해 주의해 야 할 부분 이 있 음 을 발견 하고 필기 했다.
예 를 들 어 다음 과 같은 POJO 가 있 습 니 다.
  




import java.util.Date;

public class Company {

 private int id;

 private String company;

 private double price;



  또 다른 POJO 는 list 유형의 Company 를 가지 고 있 습 니 다.다음 과 같 습 니 다.

package com.loiane.model;

import java.util.List;

import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlRootElement;

@XmlRootElement(name="companies")
public class Companies {

 @XmlElement(required = true)
 private List<Company> list;

 public void setList(List<Company> list) {
  this.list = list;
 }
}

  
  이렇게 spring mvc 에서 나 오 는 XML 을 통 해 다음 과 같은 것 을 발견 할 수 있 습 니 다.


@RequestMapping(value="/company/view.action")

public @ResponseBody Companies view() throws Exception {}


 

<companies>
 <list>
  <change>0.02</change>
  <company>3m Co</company>
  <id>1</id>
  <lastChange>2011-09-01T00:00:00-03:00</lastChange>
  。。
 </list>
 。。。。。。。
</companies>

  시간 형식 이 잘못 되 었 습 니 다.찾 아 보 니 XmlAdapter 를 계승 하고 날 짜 를 포맷 하 는 방법 을 다시 쓰 려 고 합 니 다.
 



import java.text.SimpleDateFormat;
import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlAdapter;

public class JaxbDateSerializer extends XmlAdapter<String, Date>{

 private SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy");

    @Override
    public String marshal(Date date) throws Exception {
        return dateFormat.format(date);
    }

    @Override
    public Date unmarshal(String date) throws Exception {
        return dateFormat.parse(date);
    }
}

그리고 날짜 처리 가 필요 한 속성 에 가입
  @XmlJavaTypeAdapter,즉:

package com.loiane.model;

import java.util.Date;

import javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import com.loiane.util.JaxbDateSerializer;

public class Company {

 private int id;

 private String company;

 
 @XmlJavaTypeAdapter(JaxbDateSerializer.class)
 public Date getLastChange() {
  return lastChange;
 }

}

  규격 에 맞 는 정 보 를 만 들 수 있 습 니 다.다음 과 같 습 니 다.


<companies>
 <list>
  <change>0.02</change>
  <company>3m Co</company>
  <id>1</id>
  <lastChange>09-01-2011</lastChange>
  
 </list>
。。。。。。。。。
</companies>

좋은 웹페이지 즐겨찾기