PrimeFaces向导 - 如何使用onstart / oncomplete来更改标签更改ajax loading

时间:2016-03-24 19:24:23

标签: jsf jsf-2 primefaces

我正在使用PrimeFaces 4。 我不想使用p:ajaxStatus,因为我只想显示一些组件的加载。 所以我有一个p:blockUI组件,我通常在ajax事件中通过这样做来显示:

onstart="loading.show();" oncomplete="loading.hide();"

但对于p:wizard组件,我不知道当用户更改标签(单击下一个/后退按钮或单击标签标题)时,我该怎么做。我在向导中尝试了以下内容:

<p:wizard id="wizard" flowListener="#{myBean.onFlowProcess}" style="display: inline-block;" backLabel="Prev" nextLabel="Next" showNavBar="true" widgetVar="wizardWV"> 
    <p:ajax event="tabChange" onstart="loading.show();" oncomplete="loading.hide();" />
    <p:tab id="tab1" title="My tab 1">
        <p:panel>
            <h:outputLabel value="test" />
        </p:panel>
    </p:tab>
    <p:tab id="tab2" title="My tab 2">
        <p:panel>
            <h:outputLabel value="test2" />
        </p:panel>
    </p:tab>
</p:wizard>

然后我收到了错误:

<p:ajax> Unable to attach <p:ajax> to non-ClientBehaviorHolder parent

有什么方法可以实现这个目标吗?

由于

1 个答案:

答案 0 :(得分:0)

这是因为向导不是客户端行为容器。

向导的标准流程是标签仅用于标题中的显示目的。您应该使用向导流的下一个/后退触发器。

请参阅:http://www.primefaces.org/showcase/ui/panel/wizard.xhtml 有基本功能/流程,但有一些更多的链接 http://www.primefaces.org/docs/vdl/3.5/primefaces-p/wizard.html

如果你试图让你的标签可以点击,那么这是一个不同的故事,你需要设置你的流量监听器,让他们都选择与下一个相同的方法/动作 - 但是将参数传递给辅助bean并手动确定流程。您可以在PF中设置一个远程呼叫,并附带一个onclick,以访问您等待负载的意图。

我会看一下用例场景,也许Wizard是你正在寻找的错误组件?

查看提供的代码,您当前的标签不可点击,我看不到您的后退/下一个操作按钮。