richfaces 使用问题集
1. java.util.NoSuchElementException
使用selectOneMenu或 rich:comboBox 时,valueChange或 画面提交 后报错
1. java.util.NoSuchElementException
2. javax.faces.component.SelectItemsIterator.next(SelectItemsIterator.java:96)
3. ..........
原因: list项目为空 (可能没有初始化 或 scope为request)
2. jsp画面在刷新时,局部产生抖动,或div位置发生变化(与上面部分的间隔增大或消除)
原因: 可能是动态的改变了div里的内容导致
临时解决方法: 在变动的位置上方 加入代码
<br style="line-height: 1px; display: block;" >
3. 使用richfaces-api-3.3.0.GA.jar 版本的rich:panel时,会产生多余的空白
解决: . 在body onload 时对rich:panel生成的div 设置 style.display='none'
. 使用margin
<rich:panel style="margin:-10px; " >
4. 使selectOneMenu项目对鼠标滚轮事件不响应
在body onload里 设定
document.getElementById("pulldownid").onmousewheel = invalidwheel; function invalidwheel() { return false; }
5. rich:calendar对鼠标滚轮事件不响应
使rich:calendar弹出选择画面后,位置固定 (画面div不响应鼠标滚轮滚动,当滚动时关闭calendar)
function controllwheel(flg)
{
if (flg == 0)
document.getElementById("scrolldivid").onmousewheel = function(){return false;};
else
document.getElementById("scrolldivid").onmousewheel = function(){return true;};
}
<rich:calendar id="calendar" onexpand="controllwheel(0);" oncollapse="controllwheel(1);"/>
function closecalendar()
{
document.getElementById("calendar").component.doCollapse(event);
}
<div id="scrolldivid" onscroll="closecalendar();">
6. selectOneMenu与a4j:support一起使用时,如果需要监听selectOneMenu的valuechange事件,最好用
a4j:support的actionListener , 不要用selectOneMenu的valueChangeListener
另外,用了a4j后,最好把事件都放在a4j里,否则容易出现乱码
7. rich:calendar位置固定问题
当rich:calendar放在div里时,不会随着div一起滚动,而是浮在画面上的固定位置
原因是div的position没有设为absolute
(这时rich:calendar是div的child)