我在Glassfish 3.1.1上使用Primefaces 3.1,JSF 2.1.6。
我有大量的命令按钮工作正常,但这一个没有,我无法弄清楚为什么。将触发javascript警报,但从不调用控制器方法。
请注意,第一个命令按钮完全触发(“过滤器”按钮),但数据表内的编辑按钮不会触发。我尝试使用ui:repeat而不是dataGrid,但这会产生相同的效果/问题。 我有很多其他带有命令按钮的数据表,但它们都工作正常......很奇怪。
<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";
}
感谢您的帮助, 科恩
答案 0 :(得分:1)
Aaarghh,经常在经过半天的调整后,我发布了这个问题,10分钟后,我发现了问题。
问题是数据表没有包装在p:列中。它呈现正常,但这导致表单只是在不调用辅助bean方法的情况下进行提交。
<p:dataGrid var="eps" value="#{epsMembershipViewController.ldapEpss}"
columns="1">
<p:column> THIS WAS NOT PRESENT !!!!
<f:facet name="header">
<h:outputText value="#{eps}" />
</f:facet>
<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>
</p:column>