Jsf ajax不更新p:datatable
我需要直接在列表中做一些工作,这很容易完成,但当我通过ajax更新p:datatable时,它不会给出结果,但在相同的代码中,网格外的控件会被更新。此外,当我通过p:commandbutton运行相同的命令时,datatable会同时更新 实体BeanJsf ajax不更新p:datatable,jsf,primefaces,Jsf,Primefaces,我需要直接在列表中做一些工作,这很容易完成,但当我通过ajax更新p:datatable时,它不会给出结果,但在相同的代码中,网格外的控件会被更新。此外,当我通过p:commandbutton运行相同的命令时,datatable会同时更新 实体Bean public class Data { String id; String title; double qty; double rate; double total; public Dat
public class Data {
String id;
String title;
double qty;
double rate;
double total;
public Data(String id, String title, double qty, double rate, double total) {
this.id=id;
this.title=title;
this.qty=qty;
this.rate=rate;
this.total=total;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public double getQty() {
return qty;
}
public void setQty(double qty) {
this.qty = qty;
}
public double getRate() {
return rate;
}
public void setRate(double rate) {
this.rate = rate;
}
public double getTotal() {
return total;
}
public void setTotal(double total) {
this.total = total;
}
}
豆角
@Named ("DataMB")
@SessionScoped
public class DataMB implements Serializable {
private List<Data> testD;
public List<Data> getTestD() {
return testD;
}
public void setTestD(List<Data> testD) {
this.testD = testD;
}
public DataMB () {
testD = new ArrayList<>();
testD.add(new Data("Item 1", "Test Item No. 1", 11, 20, 220));
testD.add(new Data("Item 2", "Test Item No. 2", 10, 40, 400));
testD.add(new Data("Item 3", "Test Item No. 3", 3, 60, 180));
testD.add(new Data("Item 4", "Test Item No. 4", 21, 12, 252));
}
public void onCellEdit(int row) {
testD.get(row).total=testD.get(row).qty*testD.get(row).rate;
System.out.println("Total @ Row No. " + testD.get(row).total);
PrimeFaces.current().ajax().update("frm:detTable");
}
}
@Named(“DataMB”)
@会议范围
公共类DataMB实现了可序列化{
私有列表testD;
公共列表getTestD(){
返回testD;
}
公共空间设置标准(列表测试D){
this.testD=testD;
}
公共数据MB(){
testD=newarraylist();
试验D.添加(新数据(“项目1”、“试验项目编号1”、11、20、220));
试验D.添加(新数据(“项目2”,“试验项目编号2”,10,40,400));
试验D.添加(新数据(“项目3”、“试验项目编号3”、3、60、180”);
试验D.添加(新数据(“项目4”、“试验项目编号4”、21、12、252));
}
公共void onCellEdit(int行){
testD.get(row).total=testD.get(row).qty*testD.get(row).rate;
System.out.println(“总计@行编号“+testD.get(行).Total);
PrimeFaces.current().ajax().update(“frm:detTable”);
}
}
html
虽然,我知道可以在@Entity级别的bean中进行计算,但是,我制作了这个简单的示例来说明我需要在动态表中进行一些计算
请建议
<p:commandButton value="Update Grid" action="#{DataMB.onCellEdit(0)}" />
<p:dataTable var="result" id="detTable" widgetVar="detTable"
value = "#{DataMB.testD}"
paginator = "false"
scrollable="true" rowIndexVar="rowindex" scrollHeight="344" scrollWidth="auto"
scrollRows="9" liveScroll="false"
editable = "true"
editMode = "cell"
>
<p:ajax event="cellEdit" listener="#{DataMB.onCellEdit(rowindex)}" update="detTable" />
<p:column width="45">
<f:facet name="header">
<h:outputText value="id" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{result.id}" /></f:facet>
<f:facet name="input"><p:inputText value="#{result.id}" style="width:95%;"/> </f:facet>
</p:cellEditor>
</p:column>
<p:column width="45">
<f:facet name="header">
<h:outputText value="title" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{result.title}" /></f:facet>
<f:facet name="input"><p:inputText value="#{result.title}" style="width:95%;"/> </f:facet>
</p:cellEditor>
</p:column>
<p:column width="45">
<f:facet name="header">
<h:outputText value="qty" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{result.qty}" /></f:facet>
<f:facet name="input"><p:inputText value="#{result.qty}" style="width:95%;"/> </f:facet>
</p:cellEditor>
</p:column>
<p:column width="45">
<f:facet name="header">
<h:outputText value="rate" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{result.rate}" /></f:facet>
<f:facet name="input"><p:inputText value="#{result.rate}" style="width:95%;"/> </f:facet>
</p:cellEditor>
</p:column>
<p:column width="45">
<f:facet name="header">
<h:outputText value="total" />
</f:facet>
<p:cellEditor>
<f:facet name="output"><h:outputText value="#{result.total}" /></f:facet>
<f:facet name="input"><p:inputText value="#{result.total}" style="width:95%;"/> </f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>