Mur*_*zen 3 ajax datatable jsf primefaces
我有一个JSF视图,列出了Primefaces中集合中的项目DataTable.最右边的列包含删除按钮.单击删除按钮时,应该进行Ajax调用,从会话变量中删除相应的项目Cart并就地更新视图.我希望请求和视图更改尽可能小.
以下是我为此目的所做的事情:
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Register user</title>
</h:head>
<h:body>
<f:view>
<h:form id="itemsForm">
<p:outputPanel id="items">
<p:dataTable value="#{cart.itemList}" var="item">
<p:column>
<f:facet name="header">
<h:outputText value="name" />
</f:facet>
<h:outputText value="#{item.product.description}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="quantity" />
</f:facet>
<h:outputText value="#{item.quantity}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<p:commandButton icon="ui-icon-close" title="remove from cart">
<p:ajax listener="#{cart.removeItem}"
update="form:itemsForm"
process="@this" />
</p:commandButton>
</p:column>
<f:facet name="footer">
Total amount: ${cart.totalAmount}
</f:facet>
</p:dataTable>
</p:outputPanel>
</h:form>
</f:view>
</h:body>
</html>
Run Code Online (Sandbox Code Playgroud)
因此,我有以下方法 Cart.java
public void removeItem() {
System.out.println("REMOVE REQUEST ARRIVED");
}
Run Code Online (Sandbox Code Playgroud)
但是,removeItem单击删除按钮时,该方法甚至不执行.所以我的问题是:
1)我的Ajax调用有什么问题?我应该对XHTML做出哪些更改?
2)如何处理removeItem方法中的请求并返回响应?
3)如何更新footer显示totalAmount的?
Mr.*_*mes 17
您可以#{item}作为方法调用的参数传递给actionListener.
您的.xhtml页面应如下所示:
<p:dataTable id="cartTable" value="#{cart.itemList}" var="item">
<p:column>
<f:facet name="header">
<h:outputText value="" />
</f:facet>
<p:commandButton icon="ui-icon-close" title="remove from cart"
actionListener="#{cart.removeItem(item)}" update="cartTable" />
</p:column>
</p:dataTable>
Run Code Online (Sandbox Code Playgroud)
这是removeItem你的方法ManagedBean:
@ManagedBean
@ViewScoped
public class Cart {
private List<Item> itemList;
public void removeItem(Item item) {
itemList.remove(item);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
26830 次 |
| 最近记录: |