, что я:PrimeFaces: р: cellEditor не стреляющие
Основной данных таблицы, которые для простоты, только показывает количество элементов определенного клиента порядка.
ПРОБЛЕМА:
Когда я нажимаю на ячейку, то <p:inputText>
появляется, я могу ввести номер (например .: 3). Когда я нажимаю enter
, старое число (например: 42) появляется в пределах <h:outputText>
. Если я снова щелкнул ячейку, снова появится отредактированный номер (3). И самое главное, метод public void onCellEdit(CellEditEvent event)
НЕ запускается.
ЧТО ИМЕЮТ Я ПРОБОВАЛИ:
Я создал еще один базовый веб-приложение, в котором есть только один редактируемые <p:dataTable>
(как я хочу), и в этом проекте слушатель пожары, и я просто не получить то, что другое. Ради простоты этого вопроса я не буду добавлять код другого проекта.
Кроме того, я попытался применить (не) принятый ответ на вопрос this, но он тоже не работал.
ВОПРОС:
Почему слушатель не срабатывают? Что может быть причиной (или причинами)? Да, я новичок, поэтому любой намек был бы очень желанным.
Спасибо!
XHTML с таблицей
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:p="http://primefaces.org/ui"
xmlns:f="http://java.sun.com/jsf/core"
template="/templates/template.xhtml">
<ui:define name="metadata"/>
<ui:define name="content">
<h:form id="lastOrders">
<p:dataTable id="orders"
var="item"
value="#{editController.items}"
emptyMessage="Der Kunde hat noch keine Aufträge!"
style="size: 30px"
editable="true"
editMode="cell">
<p:ajax event="cellEdit" listener="#{editController.onCellEdit}" update=":mainForm:lastOrders:orders"/>
<f:facet name="header">
<p:outputPanel>
<h:outputText value="#{userController.customer.name}" />
</p:outputPanel>
<p:outputPanel>
<h:outputText value="#{oldOrdersController.order.date}">
<f:convertDateTime pattern="dd.MM.yy" />
</h:outputText>
</p:outputPanel>
</f:facet>
<p:column headerText="Amount">
<p:cellEditor>
<f:facet name="output">
<h:outputText value="#{item.amount}"/>
</f:facet>
<f:facet name="input">
<p:inputText id="modelInput" value="#{item.amount}"/>
</f:facet>
</p:cellEditor>
</p:column>
</p:dataTable>
</h:form>
</ui:define>
Это EditController
package com.forall.laundry.controller.edit;
import com.forall.laundry.controller.OldOrdersController;
import com.forall.laundry.model.Item;
import com.forall.laundry.service.ItemService;
import com.forall.laundry.service.ProductService;
import java.io.Serializable;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.view.ViewScoped;
import javax.inject.Inject;
import javax.inject.Named;
import org.primefaces.event.CellEditEvent;
@Named
@ViewScoped
public class EditController implements Serializable{
@EJB
private ItemService itemService;
@EJB
private ProductService productService;
@Inject
private OldOrdersController oc;
private List<Item> items;
@PostConstruct
public void init(){
items = itemService.getItemsFrom(oc.getOrder());
}
public void onCellEdit(CellEditEvent event) {
System.out.println("TEST"); // NOT FIRED (i know sysout is not good but no matter what I do here, nothing happens.
}
public ItemService getItemService() {
return itemService;
}
public void setItemService(ItemService itemService) {
this.itemService = itemService;
}
public OldOrdersController getOc() {
return oc;
}
public void setOc(OldOrdersController oc) {
this.oc = oc;
}
public List<Item> getItems() {
return items;
}
public void setItems(List<Item> items) {
this.items = items;
}
public ProductService getProductService() {
return productService;
}
public void setProductService(ProductService productService) {
this.productService = productService;
}
}
Пожалуйста, добавьте текст, что вы изменили и почему, что решить ее. Поэтому другие могут легче распознать вещи для себя – Kukeltje