【问题标题】:load data of p:dataTable on Page-Load在页面加载时加载 p:dataTable 的数据
【发布时间】:2014-01-11 17:00:42
【问题描述】:

我是 jsf 和 jpa 的新手,但我想显示数据库中表中的所有记录。

显示所有记录的数据页可通过我的导航访问。

<h:body>
    <h:form>
        <p:menu styleClass="left-navigation">
            <p:submenu label="Versand" >
                <p:menuitem value="Bargeld-Versand" action="createNewAblieferung"/>
                <p:menuitem value="Bargeld-Bestellung"/>
                <p:menuitem value="Wertpost-Versand"/>
            </p:submenu>
            <p:submenu label="Administration">
                <p:menuitem value="Bestellungen"/>
                <p:menuitem value="Ablieferungen" action="allAblieferungen"/>
                <p:menuitem value="User"/>
            </p:submenu>
        </p:menu>
    </h:form>
</h:body>

这是数据页“allAblieferungen.xhtml”的代码,它应该在primefaces数据表中显示所有记录。

<h:body>
    <ui:composition template="WEB-INF/template/master.xhtml">
        <ui:define name="content">
            <h:form>
                <p:dataTable var="abl" value="#{ablieferungPM.getAllAblieferungen()}">
                    <p:column headerText="ID">
                        <h:outputText value="#{abl.id}"
                    </p:column>
                    <p:column headerText="AblieferndeGS">
                        <h:outputText value="#{abl.ablieferdeGS}"
                    </p:column>
                    <p:column headerText="EmpfängerGS">
                        <h:outputText value="#{abl.empfaengerGS}"
                    </p:column>
                    <p:column headerText="Bemerkung">
                        <h:outputText value="#{abl.bemerkung}"
                    </p:column>
                    <p:column headerText="Summe">
                        <h:outputText value="#{abl.summe}"
                    </p:column>
                </p:dataTable>
            </h:form>
        </ui:define>
    </ui:composition>
</h:body>

我的托管 bean (ablieferungPM.java) 提供了 ui 的所有方法,包括用于显示表的所有记录的“getAllAblieferungen()”方法。

@EJB
    private AblieferungService service;

public List<Ablieferung> getAllAblieferungen() {
    return service.getAllAblieferungen();
}

该方法从无状态 bean (AblieferungService.java) 调用服务。该服务包括业务逻辑的所有方法,并使用 jpa 进行数据库访问。 “getAllAblieferungen()”从我的数据库中收集对象

@PersistenceContext
    private EntityManager em;

public List<Ablieferung> getAllAblieferungen() {
    return em.createNamedQuery(Ablieferung.FIND_ALL, Ablieferung.class).getResultList();
}

要获取表的所有对象,我使用下面的实体类的查询

@NamedQueries({
@NamedQuery(name = Ablieferung.FIND_ALL, query = "SELECT a FROM Ablieferung a"),})

所以,问题是,点击“Ablieferung”链接不会发生任何事情,真的什么都不会发生! glassfish的控制台也不例外…… 可以使用导航第一个链接上的表单将新对象插入数据库。这工作正常,所以到数据库的连接应该没问题!

【问题讨论】:

    标签: jsf jsf-2.2


    【解决方案1】:

    尝试menuitem 中的url 属性,在这种情况下action 执行POST 请求。

    <p:menuitem value="Ablieferungen" url="myPage?faces-redirect=true"/>
    

    请检查这个>PrimeFaces navigation using MenuItem

    【讨论】:

    • 不客气,chrome/firefox web console是你jsf开发的朋友
    猜你喜欢
    • 1970-01-01
    • 2018-12-04
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    相关资源
    最近更新 更多