这可能是一个奇怪的问题,但是我们需要从某个方法中抑制某种类型的异常,以便打印到调试控制台。
我所说的这个异常发生在primefaces的lazydatamodel上,其中setter方法抛出算术异常:/by 0,当在datatable生命周期的某个阶段pagesize为0时,它继续抛出该异常。
lazydatamodel.class的primefaces框架的父类方法是:
public void setRowIndex(int rowIndex) {
this.rowIndex = rowIndex % this.pageSize;
}
常见的解决方案如下:
@Override
public void setRowIndex(int rowIndex) {
if (rowIndex == -1 || getPageSize() == 0) {
super.setRowIndex(-1);
}
else {
super.setRowIndex(rowIndex % getPageSize());
}
}
但是,当pagesize为0时,上面发布的解决方案仍然能够将arthematic exception:/抛出0。我们已经尝试捕捉异常并在方法中操作值,这样就不会抛出异常,但会破坏ui。
当我们没有override方法时,一切正常,但是异常仍然被打印出来。我们的管理层不希望这样。
我现在考虑的解决方案是删除我的override方法,并尝试从jvm或方法本身中抑制异常。管理层似乎乐于接受这一点。在这些线路上有什么方法我可以尝试吗?
更新1:根据pso的要求,我们没有在任何地方(后端或前端)显式设置pagesize。
视图文件中的数据表定义
<p:dataTable widgetVar="myWidgetName" var="myDataVariable" value="#{myManagedBean.dataList}" rowIndexVar="myRowIndexVariable" id="myDataTableId"
styleClass="myStyleClass" emptyMessage="No Records Found"
rowStyleClass="myRowStyleClass"
scrollable="false"
paginator="true"
rows="5"
paginatorAlwaysVisible="true"
paginatorPosition="both"
paginatorTemplate="{FirstPageLink} {PreviousPageLink} {JumpToPageDropdown} {PageLinks} {NextPageLink} {LastPageLink}"
rowsPerPageTemplate="10"
selection="#{myManagedBean.mySelectedRecord}"
rendered="true">
<p:column headerText="#">
<h:outputText>#{myDataRowIndex}</h:outputText></p:column>
<p:column styleClass="myColumnStyleClass">
</p:column>
</p:dataTable>
暂无答案!
目前还没有任何答案,快来回答吧!