在接口接收非string的参数,写起来总是很麻烦。特别是日期格式,一般都是当成string接收,拿下来后在转换成date类型。通常的写法是这样的。

[code language=”java”]
@Path("test")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response addOrder(
@FormParam("time") String time,
) {
}
[/code]

我们能不能直接指定接收类型的date呢,答案是肯定,但string格式必须是date类初始化函数能识别的。

还有另一种办法,就是我们自己见一个新的class来接收这个参数。下面就是新类型的代码:

[code language=”java”]
import java.io.Serializable;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

/**
* Created by yucanlin on 16-10-11.
*/
public class DateTimeParameter implements Serializable {
private Date dateTime;

public DateTimeParameter (String dateString) throws ParseException {
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
this.dateTime = simpleDateFormat.parse(dateString);
}

public Date getDateTime() {
return dateTime;
}
}
[/code]

类DateTimeParameter,是初始化函数接收string,然后一个方法可以输出Date类型。这就够了。有了这个,我们的接口就可以写成如下的形式:

[code language=”java”]
@Path("test")
@POST
@Consumes(MediaType.APPLICATION_FORM_URLENCODED)
@Produces(MediaType.APPLICATION_JSON)
public Response addOrder(
@FormParam("time") DateTimeParameter time,
) {
Date time2 = time.getDateTime();
}
[/code]

By charlie

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注