我有一个dataGrid组件,可以同时在屏幕上呈现许多对象。下图中的样本包含其中两个组件。
按钮 ADD QUEUE 执行两项操作:
左侧的按钮正确执行。调用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。