Как получить ввод DateTime в Play!Форма CRUD? - PullRequest
4 голосов
/ 19 декабря 2011

По умолчанию поле 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?

Ответы [ 2 ]

3 голосов
/ 20 декабря 2011

Примерно так в вашем 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 {
}
2 голосов
/ 31 декабря 2011

Я наконец нашел в документации мой ответ:

Вы действительно можете настроить каждое поле ; более подробный пример можно найти в блоге 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}

Я также укажу, что вы можете написать свой собственный валидатор

Другие связанные полезные вопросы:

...