Я хотел бы добавить ярлык на панель калитки, где моделью ярлыка является значение перечисления. В зависимости от значения этого перечисления я хотел бы отобразить другое сообщение, извлеченное из файла свойств страницы.
Например, вот перечисление:
public enum ApprovalType { UNAPPROVED, APPROVED, BLOCKED };
Я могу легко добавить ярлык на панель, в которой в качестве модели указано это перечисление:
add(new Label("approval", new Model(ApprovalType.APPROVED)));
Однако, это просто выведет UNAPPROVED, APPROVED или BLOCKED. Я хотел бы вывести локализованное сообщение, которое выбирается на основе значения этого перечисления.
Итак, если у меня есть этот файл свойств, каков наилучший способ получить эти сообщения для вывода?
UNAPPROVED=Your membership is currently pending approval
APPROVED=Your membership has been approved
BLOCKED=You have been blocked from membership
Я могу заставить его работать так:
add(new Label("approval", new ResourceModel(ApprovalType.APPROVED.name());
Но проблема в том, что ResourceModel принимает только строку (ключ ресурса). Я хотел бы получить значение ключа ресурса автоматически из модели (предпочтительно CompoundPropertyModel). Другими словами, я не хочу этого делать:
Member member = (Member) getDefaultModelObject();
add(new Label("approval", new ResourceModel(member.getApproval().name())));
Я бы предпочел сделать что-то вроде:
add(new EnumLabel("approval"); // assuming I have a CompoundPropertyModel
Есть ли компонент, который делает это, который поставляется с Wicket? Или мне нужно написать свое?
Наконец, я обнаружил, что это также работает:
add(new Label("approval", new StringResourceModel(
"${}",
new PropertyModel<ApprovalType>(getDefaultModel(),"approval")
)));
Но это кажется слишком многословным и все еще не использует простоту использования CompoundPropertyModel.
Идеи