我创建了一个带有一些输入文本字段的JSF表单。另外,我在JSF中添加了一个从bean调用的JavaScript函数。该函数所做的工作是显示一个组件,几秒钟后它应该隐藏它。以下是位于jsf和组件中的函数:
function func() {
var comp = AdfPage.PAGE.findComponentByAbsoluteId("abc");
comp.setVisible(true);
setTimeout(function(){
comp.setVisible(false);
}, 5000);
}
<af:outputText value="Some EL text" id="abc" visible="false"/>
这是调用函数的支持bean代码:
FacesContext context = FacesContext.getCurrentInstance();
ExtendedRenderKitService erks =
Service.getRenderKitService(context, ExtendedRenderKitService.class);
erks.addScript(context, "func();");
问题在于,当时间(在这种情况下为5000毫秒)结束时,组件隐藏,表单验证被触发,并且重置组件显示期间输入的数据。我不希望重置数据。任何想法为什么会以这种方式发生以及如何解决它?问题与setTimeout()函数有关,还是ADF特定的问题?