Как я могу контролировать форматирование дат в URL с помощью Play? - PullRequest
2 голосов
/ 17 января 2011

У меня есть приложение Play, которое должно перечислять покупки в течение определенного периода времени.Если пользователь не указывает какой-либо интервал дат, он должен по умолчанию показывать покупки за последний год.Это делается с помощью этих двух методов в моем контроллере:

public static void show(String id) {
    Date today = new Date();
    Calendar calendar = Calendar.getInstance();
    calendar.setTime(today);
    calendar.add(Calendar.YEAR, -1);
    Date oneYearAgo = calendar.getTime();

    showWithInterval(id, oneYearAgo, today);
}

public static void showWithInterval(String id, Date fromDate, Date toDate) {
    List<Purchase> purchases= Purchase.find(id, fromDate, toDate);

    render(purchases, fromDate, toDate);
}

Тем не менее, это приводит к URL, похожему на это: http://localhost:9000/purchases/showwithinterval/10076430719?fromDate=ISO8601:2010-01-17T19:41:20%2B0100&toDate=ISO8601:2011-01-17T19:41:20%2B0100

Это не соответствует формату даты, который я указалсо свойством date.format в application.conf.Этот формат просто недоступен, так как я хочу иметь возможность печатать даты (используя ${params.fromDate}) и позволять моим пользователям редактировать их, чтобы показывать другие интервалы.Я не могу отформатировать их в представлении, так как они являются строками.

Кто-нибудь знает, как это исправить?

Редактировать: Исправлена ​​опечатка

Ответы [ 2 ]

1 голос
/ 17 января 2011

Добавьте fromDate et toDate к вашему методу рендеринга:

render(purchases,fromDate,toDate);

и отформатируйте их:

${fromDate.format()}

Воспроизведение будет форматировать дату с вашей конфигурацией формата в application.conf

0 голосов
/ 19 января 2011

Есть несколько способов повлиять на формат параметров даты в URL-адресах.

  1. play.data.binding.As Аннотация

    , начиная с Play 1.1, вы можете влиятьмаршрут и привязка данных с этой аннотацией.Просто добавьте аннотацию @As следующим образом к параметру даты:

    public static void submit(@As("dd/MM/yyyy")Date myDate)
    {
        Logger.info("date %s", new SimpleDateFormat("dd-MM-yyyy").format(myDate));  
    }
    

    Более подробную информацию о аннотации можно найти здесь http://www.playframework.org/documentation/1.1/releasenotes-1.1

  2. application.conf
    takeвзгляните на раздел i18n / DateFormat

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...