日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java输入做参数需要close吗_JAX-RS和java.time.LocalDate作为输入参数

發布時間:2025/3/17 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java输入做参数需要close吗_JAX-RS和java.time.LocalDate作为输入参数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

通常我會說為Jackson編寫一個Serializer / Deserializer,但由于你不想要任何其他依賴,你可以使用JAXB解決方案. Jackson(帶有Resteasy)支持JAXB注釋.所以我們能做的就是寫一個

XmlAdapter來從String轉換為LocalDate.一個例子就是這樣的

import java.time.LocalDate;

import java.time.format.DateTimeFormatter;

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

public class LocalDateAdapter extends XmlAdapter {

@Override

public LocalDate unmarshal(String dateString) throws Exception {

return LocalDate.parse(dateString, DateTimeFormatter.ISO_DATE);

}

@Override

public String marshal(LocalDate localDate) throws Exception {

return DateTimeFormatter.ISO_DATE.format(localDate);

}

}

你可以選擇你想要的任何格式,我剛剛使用了DateTimeFormatter.ISO_DATE,它基本上會尋找這種格式(2011-12-03).

然后,您需要做的就是為該類型的getter注釋該字段

public class Person {

private LocalDate birthDate;

@XmlJavaTypeAdapter(LocalDateAdapter.class)

public LocalDate getBirthDate() { return birthDate; }

public void setBirthDate(LocalDate birthDate) {

this.birthDate = birthDate;

}

}

如果您不希望使用此批注來混淆模型類,則可以在包級別簡單地聲明批注.

在與模型類相同的包中的package-info.java文件中,添加它

@XmlJavaTypeAdapters({

@XmlJavaTypeAdapter(type = LocalDate.class,

value = LocalDateAdapter.class)

})

package thepackage.of.the.models;

import java.time.LocalDate;

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

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

測試

@Path("/date")

public class DateResource {

@POST

@Consumes(MediaType.APPLICATION_JSON)

public Response postPerson(Person person) {

return Response.ok(DateTimeFormatter.ISO_DATE.format(

person.getBirthDate())).build();

}

}

@Test

public void testResteasy() throws Exception {

WebTarget target = client.target(

TestPortProvider.generateURL(BASE_URI)).path("date");

String person = "{\"birthDate\":\"2015-01-04\"}";

Response response = target.request().post(Entity.json(person));

System.out.println(response.readEntity(String.class));

response.close();

}

結果:2015-01-04

UPDATE

同樣對于杰克遜(我知道OP說沒有依賴關系,但這是針對其他人的),你可以使用jackson-datatype-jsr310模塊.請參閱完整解決方案here

總結

以上是生活随笔為你收集整理的java输入做参数需要close吗_JAX-RS和java.time.LocalDate作为输入参数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。