0

问题是,我对 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页面上已经有一个我可以使用的 primefaces :

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

所以,我想要做的是:在keyup输入文本中的事件上,我想启动start()函数,显示 a dialog,只有当PageBean.validLink它是 true (validLinkPageBean.validateUrl侦听器中设置,并且它是瞬时的)并且当infopanelorinfopanel2显示为 ajax 动作时,我想调用stop()函数。

那么,我该怎么做呢?

4

1 回答 1

0

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

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

如果要在 ajax 请求开始之前执行回调,可以使用 onstart 属性

于 2013-07-16T07:09:55.987 回答