将JSF2托管的pojo bean传递给EJB或将所需内容传递到传输对象中

Oh *_*oon 1 ejb-3.0 jsf-2

目前我正在调用EJB 3Session Beans JSF 2.但是,我不确定我是否应该将JSF托管bean传递给EJB?

假设表单上的任何内容(以及支持bean)都是我需要通过EJB层持久化的所有东西,我应该手动将所有属性克隆到传输对象中,还是有更好的方法来做到这一点?

但是,支持bean POJO使用JSF生命周期标记(例如@ManagedBean)进行了大量注释,并且驻留在Web projectEJB单独驻留在其中的时候EJB project.

Bal*_*usC 7

听起来好像你已经将模型与控制器紧密耦合,就像大多数基本的JSF教程所示.您应该将模型从控制器分离到它自己的类中.当你使用EJB时​​,你也在使用JPA(EJB如何对持久性真正有用?),你可以只使用现有的JPA @Entity类作为模型.

例如

@Entity
public class Product {

    @Id
    private Long id;
    private String name;
    private String description;
    private Category category;

    // ...
}
Run Code Online (Sandbox Code Playgroud)

@ManagedBean
@ViewScoped
public class ProductController {

    private Product product;

    @EJB
    private ProductService service;

    public void save() {
        service.save(product);
    }

    // ...
}
Run Code Online (Sandbox Code Playgroud)

哪个用作

<h:form>
    <h:inputText value="#{productController.product.name}" />
    <h:inputTextarea value="#{productController.product.description}" />
    <h:selectOneMenu value="#{productController.product.category}">
        <f:selectItems value="#{applicationData.categories}" />
    </h:selectOneMenu>
    <h:commandButton value="Save" action="#{productController.save}" />
</h:form>
Run Code Online (Sandbox Code Playgroud)