JSF和JPA最佳实践

6
我对JSF有一些经验,想知道使用最佳实践构建带搜索功能的典型crud应用程序。特别是关于最后一个问题,我有一个表单,用户输入对象ID;我将所有实体都映射到了JPA和相关的facade会话bean。但在JSF页面中,我该如何读取参数,调用查找方法,然后显示对象属性呢? 我是否应该使用servlet获取对象并将其存储在请求范围内,并使用JSF EL访问它? 提前感谢您的回答。
1个回答

4
你不需要一个servlet。只需在托管bean中通过@EJB注入会话门面/ EJB,然后在bean操作方法中调用它,最后以通常的JSF / EL方式在结果页面中显示它。
视图:
<h:form>
    <h:inputText value="#{bean.search}" />
    <h:commandButton value="search" action="#{bean.submit}" />
</h:form>
<h:panelGroup rendered="#{not empty bean.result}">
    <p>#{bean.result.someProperty}</p>
</h:panelGroup>

型号:

@ManagedBean
@RequestScoped
public class Bean {

    private String search; // +getter +setter
    private Data result; // +getter

    @EJB
    private DataFacade dataFacade;

    public void submit() {
        result = dataFacade.find(search);
    }

}

1
谢谢,但我现在的情况是必须显示一个单一的对象。我想我可以用findById(int id)方法替换list()方法,但如何获取参数呢?我不想从列表中选择对象。 - Neos76
1
啊,现在我明白你在问什么了。我修正了答案。 - BalusC
太好了!非常感谢。这是一种我不太熟悉的新方法。我必须从我的头脑中删除jsp/servlet模式。 - Neos76

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接