【问题标题】:How to get a DateTime input in a Play! CRUD form?如何在 Play 中获取 DateTime 输入! CRUD 形式?
【发布时间】:2012-01-23 14:32:45
【问题描述】:

默认情况下,java.util.Date 字段在 CRUD 表单中表示为简单的“日期”输入。

public class DatedModel extends Model {

    public Date creationDate;

在 CRUD 管理员中我看到:

creationDate           [TEXTINPUT]
                       yyyy-MM-dd format.

有没有什么方法可以在选择字段上使用 DateTime 输入(并非所有字段都修改 application.conf date.format)?

有没有办法影响“自动”CRUD 管理中的给定字段使用哪个“小部件”?

【问题讨论】:

    标签: datetime playframework crud playframework-1.x


    【解决方案1】:

    我终于在文档中找到了我的答案:

    你确实可以customize each field;使用jquery datatables 可以在 lunatech 博客上找到更广泛的示例,该示例还显示了如何修改分页。

    #{crud.table fields:['name', 'company']}
    
       #{crud.custom 'company'}
         <a href="@{Companies.show(object.company.id)}">
             ${object.company.name}
         </a>
       #{/crud.custom}
    
    #{/crud.table}
    

    PS。

    @AditSaxena 提示很好,确实是一个简单的解决方案;但不是我想要的,因为“提示”不正确是不可接受的!显然会让用户感到困惑!

    所以对于一个日期时间输入(具体问题)我们可以结合注解(在doc中描述)

     @As(lang={"*"}, value={"yyyy-MM-dd hh:mm:ss"}) 
    

    带有自定义提示,例如。

       #{crud.custom 'mydate'}
       <span class="crudHelp">
           Date format: etcetc.
       </span>
         ...
       #{/crud.custom}
    

    我还要指出你可以write your own validator

    其他相关的有用问题:

    【讨论】:

      【解决方案2】:

      在你的 application.conf 中有这样的东西:

      module.crud=${play.path}/modules/crud
      date.format=yyyy-MM-dd hh:mm:ss
      

      然后在模型中

      package models;
      
      import java.util.*;
      import play.data.binding.As;
      import play.db.jpa.*;
      import play.data.validation.*;
      import play.templates.*;
      import play.mvc.Scope.*;
      import javax.persistence.*;
      import play.Logger;
      import play.templates.JavaExtensions;
      
      @Entity
      public class Product extends Model {
          @As(lang={"*"}, value={"yyyy-MM-dd hh:mm:ss"}) 
          public Date creationDate;
      }
      

      您的控制器

      package controllers;
      import play.*;
      import play.mvc.*;
      import java.util.*;
      import models.*;
      
      public class Products extends CRUD {
      }
      

      【讨论】:

      • 谢谢,但是@As 给出了As cannot be resolved to a type 错误...我应该导入什么?
      • 谢谢!现在我觉得有点愚蠢......它当然是在文档中。虽然我必须说,像往常一样,信息不是/那个/容易找到:)!
      • 好的,这并没有像我预期的那样真正起作用:“@As”似乎被忽略了(有或没有时间),并且只使用了 date.format。这意味着我现在到处都有时间......我编辑了你的代码,还有什么我可能遗漏的吗?
      • 好吧,我明白了。 “As”实际上效果很好,但不影响“提示”。 application.conf 设置会影响提示。能够将“提示”链接到“作为”会很高兴...
      • 嗨 Stefano,事实上对我来说也很难找到一些信息 here 是一些。 (继续)
      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 2010-11-02
      • 2012-01-02
      • 1970-01-01
      • 2012-06-25
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多