问题是,我接下来不知道javascript,只是传授PrimeFaces的知识,我在文档中找不到方法:(
所以我的页面上有一个primefaces文本框:
<p:inputText styleClass="step1-input" value="#{PageBean.documentToDownload}">
<p:ajax event="keyup" update="infopanel,infopanel2,downloadbutton" listener="#{PageBean.validateUrl}"/>
</p:inputText>
在文本框中,当我写东西时,会发生一个动作,需要几秒钟才能完成。结果,页面上会显示panel
,或者显示某些内容,或者说我写的内容是错误的:
<p:panel id="infopanel" visible="#{PageBean.validLink and PageBean.info != null}" header="Information" style="margin-bottom:10px;">
<h:outputText value="Everything is okay"/>
</p:panel>
<p:panel id="infopanel2" visible="#{PageBean.validLink and PageBean.info == null}" header="Error" style="margin-bottom:10px;">
<h:outputText value="An undefined error occured."/>
</p:panel>
页面上已经有一个我可以使用的主要statusDialog
:
<script type="text/javascript">
function start(){ statusDialog.show(); }
function stop(){ statusDialog.hide(); }
</script>
所以,我想要做的是:在我想要启动keyup
功能的输入文本中的start()
事件上显示dialog
,仅当PageBean.validLink
时是真的(validLink
在PageBean.validateUrl
监听器中设置,并且它是瞬时的)
当infopanel
或infopanel2
显示为ajax操作时,我想调用stop()
函数。
那么,我该怎么做?
答案 0 :(得分:0)
如果我正确理解你的问题你想在ajax动作完成时执行javascript函数吗?为此,您可以使用ajax组件上的oncomplete属性:
<p:ajax event="keyup" update="infopanel,infopanel2,downloadbutton" listener {PageBean.validateUrl}" oncomplete="stop()"/>
如果要在ajax请求开始之前执行回调,可以使用onstart属性