2013-07-15 132 views
0

启动和停止javascript'indeterminate dialog'问题是,我几乎没有任何JavaScript知识,只是PrimeFaces的传递知识,而且我无法在文档中找到如何操作: (JSF和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> 

有已经在页面上primefaces statusDialog,我可以使用:

<script type="text/javascript"> 
    function start(){ statusDialog.show(); } 
    function stop(){ statusDialog.hide(); } 
</script> 

所以,我想要做的是:在我要启动start()功能的输入文本keyup事件,显示一个dialog,只有当PageBean.validLink为真(validLink设置在PageBean.validateUrl监听器,它的瞬间) 当infopanelinfopanel2显示为一个Ajax动作,我想打电话给stop()功能。

那么,我该怎么做呢?

+0

什么的'dialog'做什么?它显示来自“面板”的消息吗?另外,当你使用'keyup'时,无论条件如何,都会调用'start()'。 – Andy

回答

0

如果我正确理解你的问题,你想在ajax动作完成时执行javascript函数?为此,您可以在Ajax组件上使用的onComplete属性:

<p:ajax event="keyup" update="infopanel,infopanel2,downloadbutton" listener {PageBean.validateUrl}" oncomplete="stop()"/> 

如果你想使一个回调的AJAX reques之前执行的开始,你可以使用的OnStart属性

+0

是的,就是这样!谢谢! –