我正在Glassfish 4.1上製作Java EE 7應用程序(war)。
該應用程序是一個簡單的CRUD應用程序。
對於測試CRUD操作,我製作了一個Java SE客戶端(使用Jersey2客戶端API)。 奇怪的行爲是HTTP POST創建不檢測對象的一個領域:
我有一個「生日」屬性,來「空」總是在服務器端。
我不明白爲什麼會發生這種情況,以及如何解決這個問題?Stange RESTful Java EE行爲
這裏是我正在使用服務器端的依賴關係:
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>org.eclipse.persistence.core</artifactId>
<version>2.6.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-web-api</artifactId>
<version>7.0</version>
<scope>provided</scope>
</dependency>
下面是客戶端的依賴關係:
<dependency>
<groupId>org.glassfish.jersey.core</groupId>
<artifactId>jersey-client</artifactId>
<version>2.22</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.jaxrs</groupId>
<artifactId>jackson-jaxrs-json-provider</artifactId>
<version>2.6.2</version>
</dependency>
這裏是在客戶端創建塊:
Client client = ClientBuilder.newClient();
WebTarget webTarget = client.target("http://localhost:8080/MedicalCenter/rest/customers");
Customer customer = new Customer("Jason", "Bourne", new Date(), "This is description", new ArrayList<Device>());
ObjectMapper mapper = new ObjectMapper();
String mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
result = mapper.writeValueAsString(customer);
Response response = webTarget.request("application/json")
.post(Entity.entity(result, MediaType.APPLICATION_JSON_TYPE));
以下是發送的JSON的示例:
Here is an example {"id":null,
"name":"Jason",
"familyName":"Bourne",
"birthDate":"2015-10-05T21:41:43.044+0000",
"description":"This is description",
"creation":"2015-10-05T21:41:43.044+0000",
"enabled":true,
"system":true,
"version":null,
"devices":[]}
請幫幫我:) 謝謝!
你打印出JSON的樣子嗎?數據序列化不會出現如何服務器期望。 – leeor
檢查以確保沒有什麼是瞬態的 –
這是什麼'String mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);'? – ACV