0

我对以下用例有架构问题。

我有一个用于创建 JPA 实体的 JSF 页面,例如订单。

Order 实体有两个字段:invoiceRecipient 和receiver。两种类型的客户。

Order 表单上有两个字段,每个字段都有一个按钮,用于打开一个选择列表,用于从 customerSelectionController 中选择一个客户。

当客户被选中时,customerSelectionController bean 会执行以下操作:

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

并且 orderFormController 用

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

}

这就是问题所在 ^^ orderFormController 知道客户已被选中,但它是打算设置为 invoiceRecipient 还是订单的接收者?

我知道您可以指定更准确的限定符,例如 @SelectedAsInvoiceRecipient 但这真的是如何做到这一点的方法吗?

我是否应该将 customerSelectionController bean 复制为 invoiceRecipientSelectionController 和 receiverSelectionController 并让它们触发不同的合格客户实体?

我也在使用支持 GroupedConversations 和其他复杂事物的 Apache Deltaspike,但我找不到如何实现这一点的指定规则。

谢谢你的帮助

4

1 回答 1

0

您可以使用限定符或将Customer实体包装在更具体的事件类型中,例如

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

Event<InvoiceRecipientSelected> invoiceRecipientSelected;
于 2014-08-29T17:06:28.233 回答