参考这里的帖子中给出的建议,我尝试使用实时滚动实现惰性加载来处理大型数据集,但实时滚动不会发生,当可数据的行和scrollRow属性都used.If我删除行属性,然后没有记录displayed.Here是我的代码片段,我tried.Can如果我做错了什么,请有人帮我。
JSF 代码片段
<p:dataTable id="arcRecList" var="data"
value="#{archivedRecordBean.archModel}" lazy="true"
tableStyle="table-layout:auto; width:80%;" styleClass="datatable"
scrollable="true" scrollWidth="84%" scrollHeight="81%"
columnClasses="columnwidth" liveScroll="true" scrollRows="20"
filteredValue="#{archivedRecordBean.filteredArchiveItems}"
resizableColumns="true" rows="20">
<p:column headerText="Insured" filterBy="#{data.insuredName}"
sortBy="#{data.insuredName}" filterMatchMode="contains"
style="width:15%;white-space:pre-line;" escape="false"
filterStyle="width:80% !important; margin-top:25px;"
sortFunction="#{archivedRecordBean.sortColumn}">
<h:outputText value="#{data.insuredName}" />
<!-- style="width:250px" -->
</p:column>
.
.
.
</p:dataTable>
受管bean
@ManagedBean
@ViewScoped
public class ArchivedRecordBean implements Serializable {
private List<LPINFO> archiveItems=null;
private List<LPINFO>filteredArchiveItems;
private LPINFO objLPINFO=null;
JdbcConnection jdbcConnection=null;
Connection connection=null;
Statement selectStmt=null;
ResultSet rs=null;
private transient LazyDataModel<LPINFO> archModel;
public ArchivedRecordBean()
{
getArchiveFields();
}
@PostConstruct
public void init()
{
archModel=new LazyArchiveDataModel(archiveItems);
}
public List<LPINFO> getArchiveItems() {
System.out.println("inside getter");
return archiveItems;
}
public void setArchiveItems(List<LPINFO> archiveItems) {
this.archiveItems = archiveItems;
}
public LPINFO getObjLPINFO() {
return objLPINFO;
}
public void setObjLPINFO(LPINFO objLPINFO) {
this.objLPINFO = objLPINFO;
}
public List<LPINFO> getFilteredArchiveItems() {
return filteredArchiveItems;
}
public void setFilteredArchiveItems(List<LPINFO> filteredArchiveItems) {
this.filteredArchiveItems = filteredArchiveItems;
}
public LazyDataModel<LPINFO> getArchModel() {
return archModel;
}
public void setArchModel(LazyDataModel<LPINFO> archModel) {
this.archModel = archModel;
}
public void getArchiveFields()
{
System.out.println("inside getArchiveFields");
ArchiveRecordsDao daoObject=new ArchiveRecordsDao();
archiveItems=daoObject.getArchiveRecords();
}
}
刀类
public class ArchiveRecordsDao {
JdbcConnection con = null;
Connection connection;
Statement selectStmt;
public ResultSet rs = null;
private List<LPINFO> archiveItems = null;
public LPINFO objWorkSpaceItem = null;
public List<LPINFO> getArchiveRecords()
{
try
{
con=new JdbcConnection();
connection=con.getJdbcConnection();
selectStmt=connection.createStatement();
String query="select * from LPINFO where LPINFO.ClearDate < (select TOP 1 Tbl_CurrentYear.CurrentYear from dbo.Tbl_CurrentYear)"
+"AND (LPINFO.ClearDate is not null)";
rs=selectStmt.executeQuery(query);
archiveItems=new ArrayList<LPINFO>();
while(rs.next())
{
objWorkSpaceItem=new LPINFO();
objWorkSpaceItem.setInsuredName(rs.getString("InsuredName"));
.
.
.
archiveItems.add(objWorkSpaceItem);
}
}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
return archiveItems;
}
}
懒惰数据模型类
public class LazyArchiveDataModel extends LazyDataModel<LPINFO> {
private List<LPINFO> datasource;
public LazyArchiveDataModel(List<LPINFO> datasource) {
this.datasource = datasource;
}
@Override
public void setRowIndex(int rowIndex) {
/*
* The following is in ancestor (LazyDataModel):
* this.rowIndex = rowIndex == -1 ? rowIndex : (rowIndex % pageSize);
*/
if (rowIndex == -1 || getPageSize() == 0) {
super.setRowIndex(-1);
}
else
super.setRowIndex(rowIndex % getPageSize());
}
@Override
public LPINFO getRowData(String rowKey) {
for(LPINFO lpinfo : datasource) {
if(lpinfo.getLPID().equals(rowKey))
return lpinfo;
}
return null;
}
@Override
public Object getRowKey(LPINFO lpinfo) {
return lpinfo.getLPID();
}
@Override
public List<LPINFO> load(int first, int pageSize, String sortField, SortOrder sortOrder, Map<String,String> filters) {
List<LPINFO> data = new ArrayList<LPINFO>();
//filter
for(LPINFO lpinfo : datasource) {
boolean match = true;
for(Iterator<String> it = filters.keySet().iterator(); it.hasNext();) {
try {
String filterProperty = it.next();
String filterValue = filters.get(filterProperty);
String fieldValue = String.valueOf(lpinfo.getClass().getField(filterProperty).get(lpinfo));
if(filterValue == null || fieldValue.startsWith(filterValue)) {
match = true;
}
else {
match = false;
break;
}
} catch(Exception e) {
match = false;
}
}
if(match) {
data.add(lpinfo);
}
}
//sort
/*if(sortField != null) {
Collections.sort(data, new LazySorter(sortField, sortOrder));
}*/
//rowCount
int dataSize = data.size();
this.setRowCount(dataSize);
//paginate
if(dataSize > pageSize) {
try {
return data.subList(first, first + pageSize);
}
catch(IndexOutOfBoundsException e) {
return data.subList(first, first + (dataSize % pageSize));
}
}
else {
return data;
}
}
}
据我所知,使用行的留档会与scrollRow发生冲突。
这是关于这两个属性的PrimeFaces留档:
行数:(整数)每页要显示的行数。(分页)
scrollRows:(整数)要在实时滚动中加载的行数。(滚动)
现在这里的问题不仅仅是行,我认为是< code > scroll width = " 84% " scroll height = " 81% "
作为文档,这两个属性是 Integer(s),因此您不会看到任何记录,因为 scrollHeight 定义错误。
scrollHeight:(整数)滚动视口高度。
scrollWidth(整数)滚动视口宽度。
尽量把它们设置成固定的整数像素,比如500。
希望这有帮助。
问题内容: 我有一个div“框”,当用户滚动到下一页时,它会逐渐使用“ .fp-viewing”作为锚点淡入淡出以开始过渡效果。问题是,当触发.fp- viewing时,页面开始滚动,并且在动画结束之前将框滚动出视图。 触发.fp-viewing时,如何延迟滚动开始,直到box在4s内完成动画播放? 问题答案: 您可以使用fullpage.js提供的选项来取消运动。
1、mybatis 是否支持延迟加载? 延迟加载其实就是讲数据加载时机推迟,比如推迟嵌套查询的时机。 延迟加载可以实现先查询主表,按需实时做关联查询,返回关联表结果集,一定程度上提高了效率。 mybatis仅支持关联对象association和关联集合对象collection的延迟加载,association是一对一,collection是一对多查询,在mybatis配置文件中可以配置lazylo
本文向大家介绍Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?相关面试题,主要包含被问及Mybatis 是否支持延迟加载?如果支持,它的实现原理是什么?时的应答技巧和注意事项,需要的朋友参考一下 Mybatis 仅支持 association 关联对象和 collection 关联集合对象的延迟加 载,association 指的就是一对一,collection 指的就是一对多查询
我在亲子关系中有几个实体:家庭(父母)和更新(孩子)。我想阅读没有相应更新的家庭列表。只有17个家庭,但大约有60,000个更新,所以我真的不想要更新。 我使用EntiesToDTO从Family实体生成DTO,并创建一个汇编器来将Family实体转换为FamilyDTO。汇编器的ToDTO方法如下所示: 当我运行汇编程序时,我发现每个生成的FamilyDTO都填充了Updates\u ID列表,
我想安排一系列动画,在屏幕上动画介绍文字。最后一个动画在完成时,应该触发运行游戏的游戏勾号逻辑。 出于某种原因,一切都在立即发生。有人能解释为什么会发生这种情况吗?或者有更好的选择吗?
问题内容: 如果您 确实经历过 与上述标题相关的事情,您是否愿意对此发表评论?我试图使共享对象在Ubuntu上同时被Clang和GCC延迟加载(我实际上不介意使用哪个编译器),但是它们看起来并没有真正支持任何延迟加载功能(我期望延迟加载功能)在需要此功能时,将存根放在父对象中,该对象试图按需加载另一个对象,但实际上并不需要)。以下命令显示了我试图使libbar.so被延迟加载到libfoo.so: