2011-12-19 57 views
4

默认情况下,java.util.Date字段在CRUD表单中用简单的“DATE”输入表示。如何在Play中获取DateTime输入! CRUD表单?

public class DatedModel extends Model { 

    public Date creationDate; 
的CRUD管理

我看到:

creationDate   [TEXTINPUT] 
         yyyy-MM-dd format. 

有没有办法有一个DateTime输入代替,在选择场只(不是所有的修改application.conf date.format) ?

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

回答

2

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

确实是可以customize each field;一个更广泛的例子可以在lunatech博客上找到,使用jquery datatables,它也显示了如何修改分页。

#{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

其他相关有用的问题:

3

像这样的事情在你的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 { 
} 
+0

谢谢,但@As给出了一个'因为无法解决类型错误...我应该导入什么? – Stefano 2011-12-20 09:33:57

+1

import play.data.binding.As; – 2011-12-20 10:06:03

+0

谢谢!现在我觉得有点愚蠢......当然在文档中。尽管我必须像往常一样说,信息不是/很容易找到:)! – Stefano 2011-12-20 11:07:40