没有为dataGrid组件中的第二个按钮执行ActionListener

时间:2017-03-01 14:08:22

标签: primefaces jsf-2 datagrid actionlistener

我有一个dataGrid组件,可以同时在屏幕上呈现许多对象。下图中的样本包含其中两个组件。

enter image description here

按钮 ADD QUEUE 执行两项操作:

  1. 执行actionListener。
  2. 打开完整的对话框窗口
  3. 左侧的按钮正确执行。调用actionListener并打开对话框窗口。右侧的按钮(以及所有其他按钮,如果渲染)执行actionListener,只打开对话框窗口。

    这是生成dataGrid的代码

        <p:dataGrid var="qmgr" id="qmgrs" value="#{manageApplications.applicationBeingEdited.queueManagers}" columns="2" layout="grid" rows="1" paginator="false" >
    
        <f:facet name="header">Queue Managers and MQ objects being used by the application #{manageApplications.applicationBeingEdited.name}</f:facet>
    
        <p:panel header="#{qmgr.queueManagerName}">
    
            <p:dataTable var="qlocal" value="#{qmgr.queuesList}">
                <p:column headerText="LOCAL QUEUE NAME" sortable="true" sortBy="#{qlocal.name}">
                    <h:outputText value="#{qlocal.name}" />
                </p:column>
    
            </p:dataTable>
    
            <p:commandButton actionListener="#{manageApplications.selectQueuesToAddToAnExistingApplication(qmgr.queueManagerNameId)}" 
                             oncomplete="PF('dlgAddQueuesToApplication').show();" 
                             update=":j_idt3:addQueuesToApplicationPanel" 
                             value="ADD QUEUE" icon="fa fa-plus">
            </p:commandButton>
        </p:panel>
    </p:dataGrid>
    

    这是豆

    @ManagedBean
    @ViewScoped
    public class ManageApplications implements Serializable {
    
        public void selectQueuesToAddToAnExistingApplication(String queueManagerId) 
        {
    
            System.out.println("This is the ID being received " + queueManagerId);
    
         }
    
         // GETTERS AND SETTERS HERE....
     }
    

    结果 左键。单击时,将显示输出,并打开对话框窗口。 右键。输出未写入,并打开对话框窗口。

    调试还表明不调用该方法。如果dataDrid有两个以上的元素,则该按钮仅适用于第一个元素。其余的都有相同的问题,没有调用actionListener。

0 个答案:

没有答案