JSF 2 Primeface 2 LazyDataModel使用
5020 ワード
最初のステップはWebプロジェクトを新規作成し、プロジェクト環境を構築し、依存するパッケージをプロジェクトに追加し、使用するサーバはJBoss 7である.
ステップ2ページコード
p:dataTableタグ関連属性Primefaceドキュメントを参照してください.ドキュメントがなければメールを送ってください.
ステップ3バックグラウンドBeanコード
@Named
主な論理コードEntityServiceによるLaydataModelのパッケージ実装
public LazyDataModel findModel(final String jpql, final Object... values) {
ステップ2ページコード
<p:dataTable var="user" value="#{userBean.lazyModel}" id="userTable"
paginator="true" rows="10" lazy="true" paginatorPosition="bottom"
paginatorTemplate=" {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {CurrentPageReport}"
currentPageReportTemplate="{currentPage}/{totalPages}"
emptyMessage="#{msgs.empty_data_msg}" selectionMode="single">
<f:facet name="header">
</f:facet>
<p:column headerText=" ">
<h:outputText value="#{user.name}" />
</p:column>
<p:column headerText=" ">
<h:outputText value="#{user.userName}" />
</p:column>
<p:column headerText=" ">
<h:outputText value="#{user.cellphoneNo}" />
</p:column>
<p:column headerText=" ">
<h:outputText value="#{user.purchaseLocName}" />
</p:column>
<p:column headerText=" " styleClass="operating_90">
<p:commandButton rendered="#{loginBean.contains('02')}" update="carDetail"
image="ui-icon ui-icon-zoomin" oncomplete="singleCarDialog.show()"
title=" ">
<f:setPropertyActionListener value="#{user}"
target="#{userBean.currentUser}" />
</p:commandButton>
<p:commandButton ajax="false"
image="ui-icon ui-icon-person" title=" " rendered="#{loginBean.contains('03')}"
action="#{userBean.roleSet}">
<f:setPropertyActionListener value="#{user}"
target="#{userBean.currentUser}" />
</p:commandButton>
<p:commandButton image="ui-icon ui-icon-org" title=" " rendered="#{loginBean.contains('04')}"
action="#{userOrgBean.input}" ajax="false" >
<f:setPropertyActionListener value="#{user}"
target="#{userBean.currentUser}" />
</p:commandButton>
</p:column>
</p:dataTable>
</p:outputPanel>
p:dataTableタグ関連属性Primefaceドキュメントを参照してください.ドキュメントがなければメールを送ってください.
ステップ3バックグラウンドBeanコード
@Named
@ConversationScoped
public class UserBean{
/** */
private LazyDataModel<User> lazyModel;
@Inject
private EntityService entityService;
@PostConstruct
private void initLazyModel(){
String sql = "select u form User u' ;
lazyModel = this.entityService.findModel(sql.toString());
}
/**
* @return the lazyModel
*/
public LazyDataModel<User> getLazyModel() {
return lazyModel;
}
/**
* @param lazyModel
* the lazyModel to set
*/
public void setLazyModel(LazyDataModel<User> lazyModel) {
this.lazyModel = lazyModel;
}
}
主な論理コードEntityServiceによるLaydataModelのパッケージ実装
public
LazyDataModel<T> lazyModel = new LazyDataModel<T>() {
@Override
public List<T> load(int first, int pageSize, String sortField, boolean sortOrder, Map<String, String> mapFilters) {
//
Integer count = Long.valueOf(countHqlResult(jpql, values)).intValue();
this.setRowCount(count);
//
Query q = createQuery(jpql, values);
setPageParameterToQuery(q, first, pageSize);
List result = q.getResultList();
return result;
}
};
lazyModel.setRowCount(1);
return lazyModel;
}
countHqlResult , , LazyDataModel
load