2013-01-11 33 views
0

我正在使用apache CXF創建一個使用multipart/form-data的JAX-RS服務,其中一個部分是我在Java bean中處理的application/json。我遇到的問題是標準拋棄反序列化器無法識別傳入的日期格式,我只能得到nullCXF中的自定義JSON日期處理

的服務是:

@POST 
@Path("/blah/") 
@Consumes("multipart/form-data") 
public String doBlah(MultipartBody body) 
{ 
     JSON json = atts.get(0).getObject(JSON.class); 
} 

的JSON對象是:

class JSON { 
    Date date; 
} 

傳入的日期是一樣的東西:November 25, 2012 13:35:24我知道如何使用SimpleDateFormat轉換,這樣我就可以改變JSON有一個字符串,我得到的價值,然後可以手動進行轉換......但你如何註冊一個類在CXF做拋棄轉換?

在beans.xml中是否有配置,或者我可以添加自定義處理程序和/或覆蓋默認的Date處理?

<jaxrs:server …> 
    <jaxrs:providers> 
     <bean class='….DateHandler' /> 
    </jaxrs:providers> 
</jaxrs:server> 

的日期處理類本身可以是很簡單的:

+0

退房http://stackoverflow.com/questions/9520716/cxf-jaxrs-how-do-i-pass-date-as-queryparam – praseodym

回答

0

你可以在Spring中如下注冊一個自定義的日期處理

public class DateHandler implements ParameterHandler<Date> { 
    @Override 
    public Date fromString(String s) { 
     Date ret = // do your magic 
     return ret; 
    } 
} 
+0

這似乎並不適用於反序列化json?應該是(我可能有一些配置問題?) –

+0

它對我來說,雖然我應該注意到,我使用傑克遜JSON處理器(' ') – praseodym