p:pdataTable/p:dataGrid/ui:repeat中的JavaP:commandButton不调用方法
我在Glassfish 3.1.1上使用Primefaces 3.1、JSF 2.1.6
我有很多命令按钮,它们工作得很好,但这一个不行,我也不知道为什么。javascript警报触发,但从未调用控制器方法
请注意,第一个commandbutton完全启动(Filter按钮),但datatable中的edit按钮不会启动。我尝试了ui:repeat而不是dataGrid,但这会产生相同的效果/问题。 我有很多其他带有commandbutton的数据表,但它们都工作得很好。。。奇怪
<h:form id="memberships" prependId="false">
<h:panelGrid columns="3">
<h:outputLabel value="Filter on EPS" />
<p:selectOneMenu value="#{epsMembershipViewController.selectedEps}"
style="width:200px" effect="fold" editable="false" id="selectEps">
<f:selectItem itemLabel="Select One" itemValue="" />
<f:selectItems value="#{epsMembershipViewController.allEps}" />
</p:selectOneMenu>
<p:commandButton value="Filter"
action="#{epsMembershipViewController.repopulateView}" ajax="false" />
</h:panelGrid>
<br />
<p:dataGrid var="eps" value="#{epsMembershipViewController.ldapEpss}"
columns="1">
<h:outputLabel value="#{eps}"
style="font-weight: bold;font-size: 14px;" />
<p:dataTable var="ldapUser" id="id_#{eps}"
value="#{epsMembershipViewController.getUsersByEpsFromLdap(eps)}"
paginator="false" selectionMode="single" rowKey="#{ldapUser.name}"
rowStyleClass="#{ldapUser.expired == 'Yes' ? 'expired' : null}">
....... columns
<p:column style="width:20px">
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<p:commandButton icon="ui-icon-extlink"
onclick="alert('this event does not work')" ajax="false"
action="#{epsMembershipViewController.edit()}" />
</p:column>
</p:dataTable>
<br />
<br />
</p:dataGrid>
</h:form>
Bean代码
public String edit(ActionEvent e) {
log.debug("EDIT USER 22222 ");
return "eps-search";
}
谢谢你的帮助, 科恩
# 1 楼答案
啊啊,就像往常一样,经过半天的调整,我发布了这个问题,10分钟后我看到了这个问题
问题是datatable没有包装在p:列中。它呈现为OK,但这会导致表单只进行提交,而不调用backingbean方法