2016-07-21 3 views
0

этот вопрос примерно хороший дизайн калитки. У нас есть несколько способов, как мы могли бы это реализовать, но хотим получить некоторые идеи, как лучше его проектировать. Мы просто хотим построить простой TimerPanel, с меткой и таймером (какой-то StopWatch).Создание пользовательской модели компонентов (TimerPanel)

Как мы проектируем его Модель. Конечно, нам нужен IModel<LocalDateTime> timerUntil. Но как мы можем определить текст Ярлык в TimerPanel?

The TimerPanel будет использоваться в ParentPanel. ParentPanel имеет модель, как это:

public class ParentDto { 
    private LocalDateTime timerAValidUntil; 
    private LocalDateTime timerBValidUntil; 
} 

С момента ParentDto не имеет никакой информации о ярлыке TimerPanel, следующих

new PropertyModel(getDefaultModel(), "timerAValidUntil") 

недостаточно.

Здесь Вопрос: мы должны определить фиксированную wicketId, позволяет сказать, что timerLabel для ярлыка в TimerPanel и Родитель Группа должна определить его в Panel.properties.xml?. Как (Вариант А)

timerPanelA:timerLabel 

или IST лучше создать новый ModelObject, как (Вариант B)

public class TimerDto() { 
    String timerLabel; 
    IModel<LocalDateTime> timerValidUntil; 
} 

Мы всегда стараемся соединить наши модели, так что если мы изменим ModelObject в одной панели также изменяется во всех зависимых панелях. Поделись своими знаниями ... Thx.

ответ

1

Использование ключей ресурсов в ParentPanel (опция A) прекрасно, это даже позволяет вам наклеить метки.
Если ваш объект таймера не имеет метки (например, отредактирован пользователем), я не вижу никакого эффекта при добавлении одного.

Wicket может работать практически с любыми объектами внутри моделей, поэтому нет необходимости создавать промежуточный слой DTO. Вы будете развиваться гораздо быстрее, привязывая свои компоненты напрямую к вашим реальным объектам.

Я мог бы ошибаться, но суффикс * Dto из вашего примера создает впечатление, что вы идете в противоположном направлении.

1

Опция A была бы лучше, и вы могли бы использовать StringResourceModel, чтобы отображать как метку, так и время в одном элементе управления.

Если вы хотите, чтобы у него было действие «таймера остановки», вы можете добавить ссылку внутри метки. См. «Ввод компонентов калитки в сообщение» в Everything about Wicket internationalization

Смежные вопросы