0
ページング時に、編集可能なフィールドとページネーションを持つデータテーブルでコントローラの変更された値が更新されません。ページネーションでデータテーブルの入力が変更された値を失う
コントローラには、ViewScopedの有効範囲があります。
テーブルのページを変更すると、入力された値はモデルに保存されず、悲しいときには現在のページの値??だけが送信されます。モデル
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;
}
}
の
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());
}
}
}
コードのコードはありがとう
のバージョン
- 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は、データテーブルの入力とは異なるものです... – Kukeltje