Nano Hash - криптовалюты, майнинг, программирование

Поле времени в Play Framework

Я пытаюсь создать простое поле времени в своем приложении Java Play Framework. Я подготовил класс:

public class Schedule extends AbstractEntity {

@Temporal(TemporalType.TIME)
public Date arrival;

@Temporal(TemporalType.TIME)
    public Date departure;

@Enumerated(EnumType.STRING)
    public Variant variant;

}

Я пытаюсь получить время отправления и прибытия с помощью этого шаблона:

 <div class="modal-body">
                @helper.form(action = routes.TripTimesController.addSchedule(trip)) {
                    @helper.inputText(scheduleForm("arrival"), '_label -> "Arrival", '_type ->"time")

                    @helper.inputText(scheduleForm("departure"), '_label -> "Destination", '_type ->"time" )

                    <select name="variant">
                    @for(variant <- Variant.values()){
                        <option value="@variant.name()">@variant.name()</option>
                    }
                    </select>

                </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
                <button type="submit" class="btn btn-primary">Save changes</button>
            </div>
            }

Что бы я ни печатал, я не могу пройти валидацию и всегда получаю информацию о том, что в форме есть ошибки:

 Form<Schedule> form = Form.form(Schedule.class).bindFromRequest();
        if(form.hasErrors()) {
            ...
        }

Каков правильный формат времени в Play? Есть ли какой-нибудь помощник времени, который может быть полезен для принудительного правильного форматирования?


  • Вы пытались увидеть, что это за ошибки? Обязательно импортируйте java.util.Date и какова цель ваших @Temporal аннотаций? 29.04.2015
  • С помощью @Temporal я пытался принудительно форматировать время даты (для столбца TIME в базе данных MySQL), как это предлагалось в этой шпаргалке playframework.com/documentation/1.2.x/cheatsheet/model. Когда я ввожу нулевые значения, ошибок нет, но что бы я ни пытался ввести, я получаю неверную форму. 29.04.2015
  • Эта шпаргалка для Play 1.2.x. Play 2.X полностью отличается от первой версии. Если вы хотите подтвердить свою дату, см. @play.data.format.Formats.DateTime(pattern = "THE_PATTERN_THAT_YOU_WANT") 29.04.2015

Ответы:


1

bindFromRequest ожидает yyyy-MM-dd представления. Чтобы добавить сортировку пользовательского представления (длинное преобразование или "гггг-ММ-дд ЧЧ: мм: СС"), вы должны использовать пользовательский DataBinder.

Несколько месяцев назад я открыл тикет о похожей проблеме на GitHub. , где в итоге я выложил свою привязку.

Однако, как уже указывалось, если вы хотите поддерживать определенный формат даты из SimpleDateFormat, вы можете просто использовать аннотацию: @play.data.format.Formats.DateTime.

Так что в вашем случае только на время "ЧЧ:мм:сс": @Formats.DateTime(pattern = "HH:mm:ss")

29.04.2015
  • И каково ожидаемое представление, когда все, что мне нужно, это только время, а не дата? 29.04.2015
  • Ваш объект относится к типу Date и по умолчанию воспроизводит типы дат маршалов с yyyy-MM-dd. Пробовали ли вы добавить @Formats.DateTime с соответствующим выражение SimpleDateFormat? 29.04.2015
  • да, @Formats.DateTime(pattern = HH:mm:ss) работает безупречно. Пожалуйста, обновите ответ, чтобы я мог его принять. 29.04.2015
  • Я обновил свой ответ соответствующим форматом даты для времени. 29.04.2015
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..