문제
저는 jsf와 jpa를 처음 사용하지만 db 테이블의 모든 레코드를 표시하고 싶습니다.
모든 기록을 표시하기 위한 데이터 페이지는 내 탐색에서 액세스할 수 있습니다.
<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>
그리고 이것은 Primefaces 데이터 테이블의 모든 레코드를 표시해야 하는 데이터 페이지 "allAblieferungen.xhtml"의 코드입니다.
<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)은 테이블의 모든 레코드를 표시하기 위한 "getAllAblieferungen()" 메소드를 포함하여 UI에 대한 모든 메소드를 제공합니다.
@EJB
private AblieferungService service;
public List<Ablieferung> getAllAblieferungen() {
return service.getAllAblieferungen();
}
메소드는 Stateless 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" 링크를 클릭해도 아무 일도 일어나지 않는다는 것입니다.글라스피시 콘솔에서도 예외는 없군요...탐색의 첫 번째 링크에 있는 양식을 사용하여 새 개체를 데이터베이스에 삽입할 수 있습니다.이것은 잘 작동하므로 데이터베이스 연결도 괜찮을 것입니다!
해결책
시도해 보세요 url
의 속성 menuitem
, 이 경우에는 action
POST 요청을 수행합니다.
<p:menuitem value="Ablieferungen" url="myPage?faces-redirect=true"/>
이것을 확인해주세요> MenuItem을 사용한 PrimeFaces 탐색