JSF和PrimeFaces:通过启动和停止javascript'不确定对话'

时间:2013-07-15 20:58:12

标签: javascript jsf java-ee primefaces dialog

问题是,我接下来不知道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时是真的(validLinkPageBean.validateUrl监听器中设置,并且它是瞬时的) 当infopanelinfopanel2显示为ajax操作时,我想调用stop()函数。

那么,我该怎么做?

1 个答案:

答案 0 :(得分:0)

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

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

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