这可能是一个愚蠢的问题(我有点像Play框架的新手),但是我真的没有运气,从本质上讲,我有一种显示方法
public static void viewDay( @As("dd-MM-yyyy") Date date) {
在/ day?date = 22-05-2011或其他任何地方通过网络访问时,哪种方法工作正常。
我的问题是,添加新记录后,我希望我的保存方法重定向回此页面。在正常情况下,这还算不错,但是由于我想在此处传递日期,因此遇到了一些麻烦。
我最初的想法只是以一种
viewDay(someDate);
方式传递日期对象(因为我已经能够处理其他DataTypes)
这会导致类似" ISO8601%3A2011-06-30T00%3A00%3A00%2B0100"的URL结尾。如果可以使用(即使不是很理想),我也可以接受,但是游戏似乎无法解密它,而是默认使用当前日期。
我也尝试将日期传递为以@As期望的格式设置的String格式,尽管这只会导致一些Type错误。删除@As(" dd-MM-yyyy")似乎也没有帮助。
在我看来,这似乎并不是一件很难的事情(尽管正如我所说的那样,我通常是Play和Java Web Framework的完整入门者),所以任何指针都将是一个很大的帮助。
谢谢,
卡尔
我的控制器的大致概述:
public class TimeRecordController extends Controller {
public static void index() {
//do stuff
}
public static void viewDay( @As("dd-MM-yyyy") Date date) {
//Do stuff (works fine when accessed via web)
//If page is arraived at via the save though url shows UTC date:"ISO8601%3A2011-06-30T00%3A00%3A00%2B0100"
//And play is unable to read the correct date
}
public static void save(Stuff here, Date rtn){
//do validation/saving
viewDay(rtn);
}
}
问题出在您未显示的代码中,我们需要两种方法的完整代码
只需使用render(date)调用您的模板,或调用另一个控制器方法,该方法期望使用date对象作为Date。 不要在Java代码中将Date转换为String,而是在参数绑定期间自动播放该句柄。 如果需要在视图模板中以某种格式呈现Date对象,则可以在application.conf中进行全局设置(扫描" date.format"),也可以使用$ {date在模板中呈现Date。 格式('yyyy-MM-dd')}。
如果这不能回答您的问题,请发布您的控制器代码,以便我们更好地了解您要实现的目标。
您好,感谢您再次与我联系:)我已经在顶部添加了一个非常粗略的控制器轮廓。 基本上,viewDay页面上的表单提交到save(),save会执行save-y的工作,然后使用日期对象调用viewDay()以在页面完成后再次显示该页面。 问题是日期以这种方式过去了,据我所知,Play似乎无法读取它,因此恢复为使用当前日期,而不是过去的日期。 再次感谢
是java util Date还是joda date。
返回的日期为ISO8601格式。 Play使用的joda-time默认为ISO 8601日历系统。