我有一個問題,我在wildfly8(jboss 8)服務器上使用Primefaces 4.0。Primefaces LazyDataModel產生本地比遠程服務器不同的輸出
我有比在該應用程序將在生產中部署的遠程服務器相同的設置本地同一臺服務器。
當我部署應用遠程服務器號碼:dataTable的是空的。只有使用primefaces LazyDataModel的表是空的。
日誌中沒有錯誤。
我也曾嘗試部署Maven構建的耳朵,我部署到遠程服務器也會在本地服務器上,並在本地工作,因爲它應該。顯然,在遠程服務器上的一些差異,但我無法看到它可能是什麼,在standalone.xml是相同的本地和遠程
任何提示什麼可能導致這種奇怪的行爲?
我已經把一些打印,看看代碼中發生了什麼,並在計數方法我得到4520返回,所以SQL工作正常問題是,在xhtml,如果我把#{billsBean.billsData.rowCount}
就在前面的表數據應該是我得到0在本地計算機上的相同的看法和相同的代碼,我得到4520
所以看起來得到的數據表中的渲染某處丟失。
@Named
@Stateless
public class LazyBillsDataModel extends LazyDataModel<Bill> implements Serializable {
private static final long serialVersionUID = -6488655263171321725L;
@Inject
@DomainsDB
private EntityManager em;
@EJB
BillHandler billHandler;
@Inject private Logger log;
public LazyBillsDataModel() {
super();
}
@Override
public List<Bill> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String, String> filters) {
System.out.println(">>>>>>>> enetering load data for BILLS");
log.debug(">>>>>>>> enetering load data for BILLS");
if (sortField == null || sortField.equals("")) {
sortField = "bill.dateCreate";
}
List<Bill> data = selectData(first, pageSize, sortField, DataUtilsWeb.transformSortOrder(sortOrder), filters);
// row count
this.setRowCount(count(filters));
return data;
}
private int count(Map<String, String> filters) {
String hql = "select count(bill.idBill) from Bill bill ";
if (filters != null && filters.size() > 0) {
hql += " where " + prepereWhereFilters(filters);
}
Query query = em.createQuery(hql);
fillQueryWitkFilterData(query, filters);
System.out.println(">>>>>>>> count " + ((Long) query.getSingleResult()).intValue());
return ((Long) query.getSingleResult()).intValue();
}
@SuppressWarnings("unchecked")
private List<Bill> selectData(int first, int pageSize, String sortField, String sortOrder, Map<String, String> filters) {
List<Bill> data = new ArrayList<Bill>();
String hql = "select bill from Bill bill left join fetch bill.organization left join fetch bill.billType left join fetch bill.billStatus ";
if (filters != null && filters.size() > 0) {
hql += " where " + prepereWhereFilters(filters);
}
// sorting
if (sortField != null && !sortField.equals("")) {
hql += " order by " + sortField;
if (sortOrder != null && !sortOrder.equals("")) {
hql += " " + sortOrder;
}
}
Query query = em.createQuery(hql);
fillQueryWitkFilterData(query, filters);
// define query boundaries
query.setFirstResult(first);
query.setMaxResults(pageSize);
data = (List<Bill>) query.getResultList();
System.out.println(">>>>>>>> BILLS laoded num : " + data.size());
log.debug(">>>>>>>> BILLS laoded num : " + data.size());
return data;
}
......
}
確保兩者都指向相同的數據庫。 – Makky
@Makky當然他們指向同一個數據庫。 :-) – simonC