我的服务定义如下。
public String getData(@QueryParam("date") Date date)
我正在尝试java.util.Date
从客户端(它是CXF的jaxrs:client,而不是通用HTTP客户端或浏览器)传递给它。
我的服务接收的日期Thu Mar 01 22:33:10 IST 2012
与HTTP URL中的一样。由于CXF无法Date
使用此String
创建对象,因此我的客户端收到404错误。我曾尝试ParameterHandler
在服务端使用a
,但由于无法预期任何特定格式的日期,因此仍然无法成功解析它。
根据这篇文章,传递a
Date
应该是开箱即用的,但是我似乎无法使基本案例起作用。为了成功将Date对象从客户端传递到服务,我需要做任何事情吗?感谢任何帮助。
谢谢
问题在于,JAX-RS指示以两种方式之一进行参数解绑:
valueOf(String)
方法。在您的情况下,Date通过其Date(String)
构造函数进行了捆绑,该构造函数无法处理客户端发送的输入格式。您可以通过几种方法来解决此问题:
选项1
让您的客户在发送日期之前更改日期的格式。这是理想的,但可能是最难实现的!
选项2
处理疯狂的日期格式。选项包括:
更改您的方法签名以接受字符串。 尝试从中构造Date对象,如果失败,请使用您自己的自定义SimpleDateFormat类进行解析。
static final DateFormat CRAZY_FORMAT = new SimpleDateFormat("");
public String getData(@QueryParam("date") String dateString) {
final Date date;
try {
date = new Date(dateString); // yes, I know this is a deprecated method
} catch(Exception e) {
date = CRAZY_FORMAT.parse(dateString);
}
}
定义您自己的执行上述逻辑的参数类。
给它一个字符串构造器或valueOf(String)
调用逻辑的静态方法。说完所有方法后,还有一种获取日期的附加方法。
public class DateParameter implements Serializable {
public static DateParameter valueOf(String dateString) {
try {
date = new Date(dateString); // yes, I know this is a deprecated method
} catch(Exception e) {
date = CRAZY_FORMAT.parse(dateString);
}
}
private Date date;
// Constructor, Getters, Setters
}
public String getData(@QueryParam("date") DateParameter dateParam) {
final Date date = dateParam.getDate();
}
或者最后,您可以为日期注册参数处理程序。 其逻辑与上面其他选项所提到的完全相同。请注意,您需要至少使用CXF
2.5.3才能评估参数处理程序,然后再尝试使用默认的捆绑逻辑。
public class DateHandler implements ParameterHandler<Date> {
public Map fromString(String s) {
final Date date;
try {
date = new Date(dateString); // yes, I know this is a deprecated method
} catch(Exception e) {
date = CRAZY_FORMAT.parse(dateString);
}
}
}
我有一个REST服务,它接收许多查询参数,其中包括字符串列表。我使用RestAssured来测试这个REST服务,但是我在将列表传递给服务时遇到了一些问题。 我的Rest服务:
问题内容: 我正在尝试创建以start_date和end_date为参数的 JR 报告。 查询: 代码: 我们可以将两个参数传递到表中的同一列吗?例如: 问题答案: 您的代码是错误的。 您应该传递如下参数: 您无需添加 到参数名称。 JasperReports 分发包中有很多示例。 您可以查看此样本以获取更多详细信息。
问题内容: 我需要转换为搜索的内容,但找不到任何内容。那你可以帮我解决这个问题吗? 编辑: 我在GWT屏幕上执行此转换过程。我在屏幕上,使用它的方法可以给我带来价值。因此,我应该将此值放入具有Date类型的对象的属性中。 希望我的编辑会更加清晰。 编辑2: 这行是我的问题的解决方案: 问题答案: 日期转换的最佳方法是使用以毫秒为单位的时间(UTC)。JS Date对象和java.util.Date
我想用C#将一个自定义的公历日期转换为波斯日期。例如,我有一个包含以下内容的字符串: 现在我想拥有: 串PersianDate=2 1392; 或 字符串PersianDate=1392/08/02 谢谢
我知道这个问题被问了很多次,但我没有找到正确的方法。我有一个日期,比如01-08-1994。我想把它转换成日期。使用。
周日->明谷-0 周一->赛宁-1 周二->Selasa-2 帮我谢谢