Архитектура приложения jsf cdi
У меня проблема архитектуры со следующим вариантом использования.
У меня есть страница JSF для создания объектов JPA, например, заказов.
Сущность Order имеет два поля: invoiceRecipient и receive. Оба типа клиента.
В форме заказа есть два поля, каждое из которых имеет кнопку, которая открывает список выбора для выбора клиента из customerSelectionController.
когда клиент был выбран, bean-компонент customerSelectionController делает что-то вроде:
@Inject
@Selected
Event<Customer> customerSelectedEvent;
public void select(Customer customer) {
customerSelectedEvent.fire(customer);
}
и orderFormController показывает событие с
public void customerSelected(@Observes @Selected Customer customer) {
}
и вот в чем проблема ^^ OrderFormController знает, что клиент был выбран, но должен ли он быть задан как invoiceRecipient или как получатель заказа?
Я знаю, что вы могли бы указать более точные классификаторы, такие как @SelectedAsInvoiceRecipient, но так ли это на самом деле?
Должен ли я скопировать bean-компонент customerSelectionController в качестве invoiceRecipientSelectionController и receiveSelectionController и разрешить им обоим запускать объекты Customer с различной квалификацией?
Я также использую Apache Deltaspike, который поддерживает GroupedConversations и другие сложные вещи, но я не смог найти определенного правила, как этого добиться.
Спасибо за вашу помощь
1 ответ
Вы можете использовать квалификаторы или обернуть Customer
сущность в более конкретном типе события, например
public class InvoiceRecipientSelected {
private Customer customer;
// ... add accessors ...
}
Event<InvoiceRecipientSelected> invoiceRecipientSelected;