0
帶分隔符的可編輯字段和分頁的數據表不會在分頁時更新控制器中的修改值。帶有分頁的數據表輸入丟失修改後的值
控制器具有Omnifaces的ViewScoped範圍。
當我更改表格的頁面時,輸入的值不會保存在模型中,並且在執行sumbit時只會發送當前頁面的值。 XHTML的
代碼
<h:form>
<p:messages autoUpdate="true"/>
<p:dataTable var="obj" id="tabla"
rows="6" paginator="true"
value="#{pruebaController.lista}">
<p:ajax event="page" process="tabla" update="tabla"/>
<p:column>
<h:outputText value="#{obj.texto}"/>
</p:column>
<p:column>
<p:inputText value="#{obj.valor}"/>
</p:column>
</p:dataTable>
<p:commandButton value="Guardar" update="@all" process="@all" action="#{pruebaController.guardar}"/>
</h:form>
控制器的代碼
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.inject.Named;
import org.omnifaces.cdi.ViewScoped;
@Named("pruebaController")
@ViewScoped
public class PruebaController implements Serializable {
private List<Prueba> lista;
public List<Prueba> getLista() {
return lista;
}
public void setLista(List<Prueba> lista) {
this.lista = lista;
}
@PostConstruct
public void init() {
lista = new ArrayList<>();
lista.add(new Prueba("uno", ""));
lista.add(new Prueba("dos", ""));
lista.add(new Prueba("tres", ""));
lista.add(new Prueba("cuatro", ""));
lista.add(new Prueba("cinco", ""));
lista.add(new Prueba("seis", ""));
lista.add(new Prueba("siete", ""));
lista.add(new Prueba("ocho", ""));
lista.add(new Prueba("nueve", ""));
lista.add(new Prueba("diez", ""));
lista.add(new Prueba("once", ""));
lista.add(new Prueba("doce", ""));
lista.add(new Prueba("trece", ""));
lista.add(new Prueba("catorce", ""));
lista.add(new Prueba("quince", ""));
}
public void guardar() {
for (Prueba p : lista) {
System.out.println(p.getTexto() + " ----- " + p.getValor());
}
}
}
模型的代碼
package es.prueba;
public class Prueba {
private String texto;
private String valor;
public Prueba(String texto, String valor) {
this.texto = texto;
this.valor = valor;
}
public String getTexto() {
return texto;
}
public void setTexto(String texto) {
this.texto = texto;
}
public String getValor() {
return valor;
}
public void setValor(String valor) {
this.valor = valor;
}
}
謝謝
個版本
- Primefaces:6.0.21或6.1.4
- 鑽嘴魚科:2.2.14
- Omnifaces:2.6.4
- 焊縫:2.4.4.Final
所以,如果你刪除'過程= 「手鼓」'工作的?並且'可編輯數據表'https://www.primefaces.org/showcase/ui/data/datatable/edit.xhtml與datable中的輸入不同... – Kukeltje