2014-08-28 198 views
0

我對以下用例有一個體繫結構問題。jsf cdi應用程序體系結構

我有一個用於創建JPA實體的JSF頁面,例如訂單。

Order實體有兩個字段:invoiceRecipient和receiver。這兩種類型的客戶。

訂單表單上有兩個字段,每個字段都有一個按鈕,用於打開一個選擇列表,用於從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知道客戶已被選中,但是是否打算將其設置爲發票接受方或訂單的接收方?

我知道你可以指定更準確的限定符像@SelectedAsInvoiceRecipient,但這真的是如何做到這一點?

我是否應該將customerSelectionController bean作爲invoiceRecipientSelectionController和receiverSelectionController複製並讓它們觸發不同限定的Customer實體?

我也使用Apache Deltaspike,它支持GroupedConversations和其他複雜的事情,但我找不到指定的規則如何實現這一點。

感謝您的幫助

回答

0

您可以使用預選賽或包裹你的Customer實體在一個更具體的事件類型,例如

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

Event<InvoiceRecipientSelected> invoiceRecipientSelected;