我有一个日期格式为“无法加载rs / Service / Store / Grantor / 122/5801 / DUE / 10/30/2017 / /true?request.preventCache=1562353357306 status:404”的URL其中10/30/2017是它具有的Java代码中的日期
@GET
@Path("/dd/{sp}/{rpt}/{ter}/{date}/{grant}/{refresh}")
@Produces(MediaType.APPLICATION_JSON)
public List<ReportPeriodBean> getApprovals(@PathParam("sp") String sp,
@PathParam("rpt") String rpt, @PathParam("ter") String ter,
@PathParam("date") String date,
@PathParam("grant") String grant, @PathParam("refresh") boolean refresh) throws Exception {
我应该如何允许我的URL以正确的日期格式显示,并让控制者在春季仍然负责其余的内容?
答案 0 :(得分:2)
要与描述中的URL匹配,最好的选择是转义不同的日期组成部分,如月,日和年。然后,在方法内部,可以将它们拼凑在一起以成为Date对象。
要全部捕获它们,因为一个Date类型将针对URL结构运行,在URL结构中,它无法分辨出Date中的“斜杠”与区分不同URL参数的“斜杠”之间的区别。如果您不想将日期转换为ISO-8601,并且不想将斜杠%编码为%2F或使用查询字符串等。
类似的事情应该起作用:
@GET
@Path("/dd/{sp}/{rpt}/{ter}/{month}/{day}/{year}/{grant}/{refresh}")
@Produces(MediaType.APPLICATION_JSON)
public List<ReportPeriodBean> getApprovals(@PathParam("sp") String sp,
@PathParam("rpt") String rpt,
@PathParam("ter") String ter,
@PathParam("month") int month,
@PathParam("day") int day,
@PathParam("year") int year,
@PathParam("grant") String grant,
@PathParam("refresh") boolean refresh) {
LocalDate date = LocalDate.of(year, month, day);
// Now use the date however you like
}
这将使您可以使用似乎首选的语法来保留网址:
rs/Service/Store/Grantor/122/5801/DUE/10/30/2017/grantValue/true?request.preventCache=1562353357306