Primefaces轮询不更新面板

时间:2012-10-02 07:55:12

标签: jsf-2 primefaces

我无法弄清楚为什么我的primefaces民意调查不会更新任何组件。

<p:poll widgetVar="poll" 
                            interval="#{messageBean.refreshInterval}" 
                            listener="#{messageBean.refreshLiveData}" 
                            update=":transactionLogForm:tabViewMain:liveViewPanel"/>

成功调用了refreshLiveData方法,但它拒绝更新outputText组件(或任何组件)。

                        <p:tab id="liveViewTab" title="Live View">
                            <h:panelGrid id="liveViewPanel" columns="6" cellpadding="5">
                                <h:outputText value="Live View Enabled: " />  

                                <p:selectBooleanCheckbox value="#{messageBean.liveViewActive}">  
                                </p:selectBooleanCheckbox> 

                                <h:outputText value="Interval: " />  
                                <p:spinner id="interval" value="#{transactionLogBean.refreshInterval}" />  
                                <h:outputText value="Last Update:" />  
                                <h:outputText id="lastUpdated" value="#{transactionLogBean.lastUpdated}" />  
                            </h:panelGrid>
                        </p:tab>

以下是body标签内的完整代码:

        <p:layout id="mainLayout" fullPage="true" style="height:100%"  >

            <h:form id="transactionLogForm">

                <p:poll widgetVar="poll" 
                        interval="#{messageBean.refreshInterval}" 
                        listener="#{messageBean.refreshLiveData}" 
                        update=":transactionLogForm:tabViewGrids:messageTable :transactionLogForm:tabViewGrids:timestatTable :transactionLogForm:tabViewMain:liveViewPanel"/>

                <p:layoutUnit id="topHeader" position="north" size="178" >

                    <ui:include src="inc_menu.xhtml" />

                </p:layoutUnit>

                <p:layoutUnit id="center" position="center" >

                    <div>
                        <p style="font-size: 20px; font-weight: bold; padding: 0px 0px 0px 10px">Transaction Logs</p>
                    </div>

                    <p:tabView id="tabViewMain" orientation="top">
                        <p:tab title="Reference No">
                            <h:panelGrid columns="2" cellpadding="5">
                                <p:inputTextarea id="referenceNo" rows="1" cols="100" value="#{transactionBean.referenceNo}" style="width:300px"/> 
                                <p:commandButton id="refreshBtnMain0" value="Search" action="#{transactionBean.searchTranLogDetails(true)}" 
                                                 update=":transactionLogForm:transactionSearchTable" ajax="true"
                                                 oncomplete="txnDialog.show()"
                                                 style="vertical-align: baseline"/>
                            </h:panelGrid>
                        </p:tab>
                        <p:tab title="Log Id">
                            <h:panelGrid columns="2" cellpadding="5">
                                <p:inputText id="logID" value="#{transactionLogBean.logID}" style="width:300px"/> 
                                <p:commandButton id="refreshBtnMain1" value="Refresh" action="#{transactionLogBean.refreshData}" update=":transactionLogForm:tabViewGrids:messageTable :transactionLogForm:tabViewGrids:timestatTable" ajax="true" />
                            </h:panelGrid>
                        </p:tab>
                        <p:tab title="Date Range">
                            <h:panelGrid columns="5" cellpadding="5">
                                <h:outputText value="Start Date:" />
                                <p:calendar id="StartDate" pattern="dd/MM/yyyy HH:mm:ss" navigator="true" value="#{transactionLogBean.startDate}" />  
                                <h:outputText value="End Date:" />
                                <p:calendar id="EndDate" pattern="dd/MM/yyyy HH:mm:ss" navigator="true" value="#{transactionLogBean.endDate}" />  
                                <p:commandButton id="refreshBtnMain2" value="Refresh" action="#{transactionLogBean.refreshData}" update=":transactionLogForm:tabViewGrids:messageTable :transactionLogForm:tabViewGrids:timestatTable" ajax="true" />
                            </h:panelGrid>
                        </p:tab>

                        <p:tab id="liveViewTab" title="Live View">
                            <h:panelGrid id="liveViewPanel" columns="6" cellpadding="5">
                                <h:outputText value="Live View Enabled: " />  

                                <p:selectBooleanCheckbox value="#{messageBean.liveViewActive}">  
                                </p:selectBooleanCheckbox> 

                                <h:outputText value="Interval: " />  
                                <p:spinner id="interval" value="#{transactionLogBean.refreshInterval}" />  
                                <h:outputText value="Last Update:" />  
                                <h:outputText id="lastUpdated" value="#{transactionLogBean.lastUpdated}" />  
                            </h:panelGrid>
                        </p:tab>

                    </p:tabView>

                    <p:tabView id="tabViewGrids">
                        <p:tab title="Message Logs">
                            <ui:include src="inc_messagelogs.xhtml" />
                        </p:tab>

                        <p:tab title="Timestat Logs">
                            <ui:include src="inc_timestatlogs.xhtml" />
                        </p:tab>
                    </p:tabView>

                    <p:dialog header="Log Message" widgetVar="logDialog" id="logDlg" showEffect="fade">  

                        <h:outputText id="msg" value="#{transactionLogBean.selectedLogMessage}"/>  

                    </p:dialog> 

                    <p:dialog header="Transaction Search Results" widgetVar="txnDialog" resizable="false" id="tranDlg"  
                              showEffect="fade" modal="false" position="center">  

                        <p:dataTable id="transactionSearchTable" value="#{transactionBean.tranlogList}" 
                                     var="t" widgetVar="tranSearchTable" rowKey="#{t.transactionId}" 
                                     selectionMode="single" selection="#{transactionBean.selectedTranlog}" 
                                     paginator="true" rows="10" style="font-size:14px"
                                     rowStyleClass="#{t.rowColour}">

                            <p:ajax event="rowSelect" update=":transactionLogForm:tabViewGrids:messageTable :transactionLogForm:tabViewGrids:timestatTable" 
                                    listener="#{transactionLogBean.refreshData(transactionBean.selectedTranlog.logId)}" 
                                    oncomplete="txnDialog.hide()" global="false"/>                                  

                            <p:column style="text-align: left">
                                <f:facet name="header">
                                    Tran Id
                                </f:facet>
                                #{t.transactionId}
                            </p:column>

                            <p:column  style="text-align: left" sortBy="#{t.dateCreated}">
                                <f:facet name="header">
                                    Date/Time
                                </f:facet>
                                #{t.dateCreated}
                            </p:column>

                            <p:column  style="text-align: left" sortBy="#{t.transactionType}">
                                <f:facet name="header">
                                    Tran Type
                                </f:facet>
                                #{t.transactionType}
                            </p:column>

                            <p:column  style="text-align: left">
                                <f:facet name="header">
                                    Amount
                                </f:facet>
                                #{t.amount}
                            </p:column>

                            <p:column  style="text-align: left">
                                <f:facet name="header">
                                    Result
                                </f:facet>
                                #{t.externalMessageCode}
                            </p:column>

                        </p:dataTable>

                    </p:dialog> 

                </p:layoutUnit>

            </h:form>

        </p:layout>

我没有收到任何错误报告,因此所有引用都必须正常 - 请帮忙! 我正在使用JSF 2.0,Primefaces 3.4.RC1

从生成的html中提取:

<div id="transactionLogForm:tabViewMain:liveViewTab" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-helper-hidden" role="tabpanel" aria-hidden="true"><table id="transactionLogForm:tabViewMain:liveViewPanel" cellpadding="5">
<tbody>
<tr>
<td>Live View Enabled: </td>
<td><div id="transactionLogForm:tabViewMain:j_idt27" class="ui-chkbox ui-widget"><div class="ui-helper-hidden-accessible"><input id="transactionLogForm:tabViewMain:j_idt27_input" name="transactionLogForm:tabViewMain:j_idt27_input" type="checkbox" /></div><div class="ui-chkbox-box ui-widget ui-corner-all ui-state-default"><span class="ui-chkbox-icon"></span></div></div><script id="transactionLogForm:tabViewMain:j_idt27_s" type="text/javascript">PrimeFaces.cw('SelectBooleanCheckbox','widget_transactionLogForm_tabViewMain_j_idt27',{id:'transactionLogForm:tabViewMain:j_idt27'});</script></td>
<td>Interval: </td>
<td><span id="transactionLogForm:tabViewMain:interval" class="ui-spinner ui-widget ui-corner-all"><input id="transactionLogForm:tabViewMain:interval_input" name="transactionLogForm:tabViewMain:interval_input" type="text" class="ui-spinner-input ui-inputfield ui-state-default ui-corner-all" autocomplete="off" value="10" /><a class="ui-spinner-button ui-spinner-up ui-corner-tr ui-button ui-widget ui-state-default ui-button-text-only"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-n"></span></span></a><a class="ui-spinner-button ui-spinner-down ui-corner-br ui-button ui-widget ui-state-default ui-button-text-only"><span class="ui-button-text"><span class="ui-icon ui-icon-triangle-1-s"></span></span></a></span><script id="transactionLogForm:tabViewMain:interval_s" type="text/javascript">$(function(){PrimeFaces.cw('Spinner','widget_transactionLogForm_tabViewMain_interval',{id:'transactionLogForm:tabViewMain:interval',step:1.0});});</script></td>
<td>Last Update:</td>
<td><span id="transactionLogForm:tabViewMain:lastUpdated"></span></td>
</tr>
</tbody>
</table>
</div>

1 个答案:

答案 0 :(得分:0)

问题解决了 - 毕竟这是一个支持bean的问题,与调查本身无关,而且工作正常。