2
我有一个PrimeFaces数据表。对于此表中的每一行,我想允许用户更新/删除行条目(用户)。h:commandButton在PrimeFaces中不工作p:dataTable
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.prime.com.tr/ui">
<h:head>
<link type="text/css" rel="stylesheet" href="themes/bluesky/skin.css" />
</h:head>
<h:body>
<center>
<h:form>
<p:panel id="viewUsersPanel" header="View Users">
<p:dataTable var="user" value="#{uController.users}"
emptyMessage="No Users Found.">
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="Name" />
</f:facet>
<h:outputText value="#{user.name}" />
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="Postal Address" />
</f:facet>
<h:outputText value="#{user.address}" />
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="Phone Number" />
</f:facet>
<h:outputText value="#{user.phone}" />
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="Email Address" />
</f:facet>
<h:outputText value="#{user.email}" />
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="DOB" />
</f:facet>
<h:outputText value="#{user.dob}">
<f:convertDateTime pattern="dd-MMM-yyyy" />
</h:outputText>
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="No. Memberships" />
</f:facet>
<h:outputText value="#{user.numberOfMemberships}" />
</p:column>
<p:column style="text-align: center;">
<f:facet name="header">
<h:outputText value="Actions" />
</f:facet>
<h:commandButton value="Update" action="#{uController.update}" />
<h:commandButton value="Delete" action="#{uController.delete}" />
</p:column>
</p:dataTable>
<h:panelGrid columns="2" cellpadding="2" id="footerPanelGrid"
border="0">
<h:commandButton action="#{uController.home}" value="Home Page" />
</h:panelGrid>
</p:panel>
</h:form>
</center>
</h:body>
</html>
但是,两个按钮都不起作用。相反,他们似乎只是刷新视图页面。我在调试中运行了应用程序,并且没有更新或删除方法。
我怀疑这可能是由于在p:dataTable中使用h:commandButton。不过,我也试过p:commandButton,但无济于事。
仅供参考,这里是UserController类的一个片段:
@ManagedBean(name="uController")
public class UserController extends AbstractController {
private Collection<User> users;
...
public String update() {
System.out.println("Ready for update");
return "update-user";
}
public String delete() {
System.out.println("Ready for delete");
return "delete-user";
}
...
}
您是否尝试将action =“#{uController.update}”更改为action =“#{uController.update()}”(更新后小括号)?我知道它应该可能没有他们工作,但经过一些与JSF的工作,我不会感到惊讶... ... –
@Zenzen刚刚试过,为删除方法,并获得第一次加载页面时出现以下错误: class'mypackage.UserController'没有属性'delete' – JamesB
你是否在使用Firebug,Chrome或其他任何带有像firebug这样的调试工具的FF?你可以在按下其中一个按钮后检查响应是什么?我知道有几次我有PF类似的问题,没有错误只是页面刷新,因为它发现有一个NullPointerExc在响应发送... –