Note that there are some explanatory texts on larger screens.

plurals
  1. POp:dataTable how to stay in edit mode?
    primarykey
    data
    text
    <p>I'm using primefaces 3.5 and watching a strange datatable behavior when editing data. If I enter wrong data in 'year' field and click on the tick I get a message about mistake. But if I don't click on the tick and click on the 'Add row' button I don't get a message. Only new row is added. I expect to stay in edit mode. How to solve this problem?</p> <pre><code>&lt;h:panelGrid columns="2" cellpadding="5"&gt; &lt;h:outputText value="In cell editing" /&gt; &lt;p:dataTable id="inCellEditing" var="car" value="#{dataTableController.cars}" rowKey="#{car.name}" editable="true"&gt; &lt;p:ajax event="rowEdit" listener="#{dataTableController.onEdit}" update=":mainForm:growl" /&gt; &lt;p:ajax event="rowEditCancel" listener="#{dataTableController.onCancel}" update=":mainForm:growl" /&gt; &lt;p:column headerText="Year"&gt; &lt;p:cellEditor&gt; &lt;f:facet name="output"&gt; &lt;h:outputText value="#{car.year}" /&gt; &lt;/f:facet&gt; &lt;f:facet name="input"&gt; &lt;p:inputText value="#{car.year}"&gt; &lt;p:ajax event="blur" update="@this"/&gt; &lt;/p:inputText&gt; &lt;/f:facet&gt; &lt;/p:cellEditor&gt; &lt;/p:column&gt; &lt;p:column headerText="Name"&gt; &lt;p:cellEditor&gt; &lt;f:facet name="output"&gt; &lt;h:outputText value="#{car.name}" /&gt; &lt;/f:facet&gt; &lt;f:facet name="input"&gt; &lt;h:selectOneMenu value="#{car.name}" &gt; &lt;f:selectItems value="#{dataTableController.carNames}" var="name" itemLabel="#{name}" itemValue="#{name}" /&gt; &lt;/h:selectOneMenu&gt; &lt;/f:facet&gt; &lt;/p:cellEditor&gt; &lt;/p:column&gt; &lt;p:column headerText="Actions"&gt; &lt;p:rowEditor /&gt; &lt;/p:column&gt; &lt;/p:dataTable&gt; &lt;p:commandButton action="#{dataTableController.addRow()}" value="Add row" ajax="false"/&gt; &lt;/h:panelGrid&gt; </code></pre> <p><br/> </p> <pre><code> public class DataTableController implements Serializable { private List&lt;Car&gt; cars; private Car selectedCar; private Car[] selectedCars; private List&lt;Car&gt; selectedCarsList; private SelectItem[] carNamesOptions; public DataTableController() { cars = new ArrayList&lt;Car&gt;(CarConverter.cars.values()); } public String[] getCarNames() { return CarConverter.cars.keySet().toArray(new String[0]); } public SelectItem[] getCarNamesAsOptions() { carNamesOptions = createFilterOptions(CarConverter.cars.keySet().toArray(new String[0])); return carNamesOptions; } private SelectItem[] createFilterOptions(String[] data) { SelectItem[] options = new SelectItem[data.length + 1]; options[0] = new SelectItem("", "Select"); for(int i = 0; i &lt; data.length; i++) { options[i + 1] = new SelectItem(data[i], data[i]); } return options; } public void onEdit(RowEditEvent event) { MessageUtil.addInfoMessage("car.edit", ((Car) event.getObject()).getName()); } public void onCancel(RowEditEvent event) { MessageUtil.addInfoMessage("car.edit.cancelled", ((Car) event.getObject()).getName()); } public Car getSelectedCar() { return selectedCar; } public void setSelectedCar(Car selectedCar) { this.selectedCar = selectedCar; } public Car[] getSelectedCars() { return selectedCars; } public void setSelectedCars(Car[] selectedCars) { this.selectedCars = selectedCars; } public List&lt;Car&gt; getCars() { return cars; } public void setCars(List&lt;Car&gt; cars) { this.cars = cars; } public List&lt;Car&gt; getSelectedCarsList() { return selectedCarsList; } public void setSelectedCarsList(List&lt;Car&gt; selectedCarsList) { this.selectedCarsList = selectedCarsList; } public void addRow(){ cars.add(new Car("",0)); } } </code></pre>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload