2014-08-28 4 views
0

У меня проблема архитектуры со следующим прецедентом.jsf cdi application architecture

У меня есть страница JSF для создания объектов JPA, например заказов.

Объект Order имеет два поля: invoiceRecipient и приемник. Оба типа Клиент.

В форме заказа есть два поля, каждый с кнопкой, которая открывает список выбора для выбора клиента из customerSelectionController.

, когда клиент был выбран боб customerSelectionController делает что-то вроде:

@Inject 
@Selected 
Event<Customer> customerSelectedEvent; 
public void select(Customer customer) { 
    customerSelectedEvent.fire(customer); 
} 

и orderFormController reveives событие с

public void customerSelected(@Observes @Selected Customer customer) { 

} 

и вот проблема ^^ orderFormController знает клиент был выбран, но он должен быть установлен как invoiceRecipient или как получатель заказа?

Я знаю, что вы могли бы указать более точные квалификаторы, такие как @SelectedAsInvoiceRecipient, но так ли это, как это сделать?

Должен ли я копировать компонент customerSelectionController в качестве invoiceRecipientSelectionController и ReceiverSelectionController, и пусть оба из них работают с разными специалистами Customer?

Я также использую Apache Deltaspike, который поддерживает GroupedConversations и другие сложные вещи, но я не мог найти определенное правило, как добиться этого.

Спасибо за вашу помощь

ответ

0

Вы можете использовать классификаторы или обернуть Customer объект в более конкретном типе события, например,

public class InvoiceRecipientSelected { 
    private Customer customer; 
    // ... add accessors ... 
} 

Event<InvoiceRecipientSelected> invoiceRecipientSelected; 
Смежные вопросы