java - 使用 Play Framework 调用带有日期的 Controller 方法

标签 java playframework

这可能是一个愚蠢的问题(我是一个 Play Framework 菜鸟)但我真的没有运气,基本上我有一个显示方法

public static void viewDay( @As("dd-MM-yyyy") Date date) {

在/day?date=22-05-2011 或其他时间通过网络访问时,哪个工作正常。

我的问题是我希望我的保存方法在添加新记录时重定向回此页面。在正常情况下,这种方法可以正常工作,但由于我想在这里传递日期,所以遇到了一些麻烦。

我最初的想法只是在

viewDay(someDate);
中传递日期对象。有点方式(因为我已经能够使用其他数据类型) 这会导致 URL 中出现类似于“ISO8601%3A2011-06-30T00%3A00%3A00%2B0100”的内容。如果它有效,我可以接受它(即使它不理想),但游戏似乎无法破译它,只是默认使用当前日期。

我还尝试将日期作为按@As 预期的方式格式化的字符串传递,尽管这只会导致一些类型错误。删除 @As("dd-MM-yyyy") 似乎也没有帮助。

在我看来,这似乎真的不应该很难做到(尽管正如我所说,我对 Play 和 Java Web 框架总体上是一个完全的菜鸟)所以任何指针都会有很大的帮助。

谢谢, 卡尔

我的 Controller 的粗略概述:

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) 调用您的模板,或调用另一个需要日期对象的 Controller 方法。不要在 Java 代码中将 Date 转换为 String,在参数绑定(bind)期间自动 Play 句柄。如果您需要在 View 模板中以特定格式呈现日期对象,您可以在 application.conf 中进行全局设置(扫描“date.format”)或使用 ${date. format('yyyy-MM-dd')}.

如果这不能回答您的问题,请发布您的 Controller 代码,以便我们更好地了解您想要实现的目标。

关于java - 使用 Play Framework 调用带有日期的 Controller 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6518903/

相关文章:

java - 模板 playframework 中的 html 语法

java - 如何在不使用 JSP 的情况下将 Java 数组分配或初始化为 Javascript 数组?

java - 将 EJB 注入(inject) JAX-RS(RESTful 服务)

java - Eclipse 无法访问项目路径中的 mysql 连接器驱动程序

java - 实验Java序列化的不兼容性

scala - 如何在使用 PlaySpecification 编写的 Controller 测试前后执行一组代码?

scala - 使用编译时 DI 时 Play 2.4.6 中的功能测试

scala - 如何将 PostgreSQL 卷附加到使用 SBT native 打包程序生成的 Docker 镜像?

java - 为什么我有时会在 Java 和 PHP 中得到不同的 SHA256 哈希值?

Java/SpotBugs,如果在接口(interface)中声明 "named static inner class",那么它是什么?