Получение данных из динамически добавляемого входного текста в одной строке и их отображение после добавления следующего входного текста в другой строке в jsf

#jsf #primefaces

#jsf #начертания

Вопрос:

Я работаю в проекте jsf. У меня есть таблица, в которой будут отображаться данные из базы данных и добавлена одна пустая строка для заполнения пользователями информации. После заполнения первой пустой строки.(На рисунке, после заполнения строки № 2) динамически добавляется новая строка. После заполнения второй строки и добавления третьей строки таблица обновляется.

У меня здесь 2 проблемы.

Во-первых, если пользователь изменит итоговые продажи с 1000 до 2000, когда таблица будет обновлена после вызова ajax, итоговые продажи снова вернутся к 1000. (Если общее изменение пользователя составляет от 1000 до 2000, я хочу получить новое значение, равное 2000, и обновить данные в базе данных позже)

Во-вторых, если пользователь заполнит информацию в новой добавленной строке (в данном случае строка № 3) и при добавлении строки № 4 таблица будет обновлена, а строка № 3 покажет пустую строку.

Я хочу, чтобы таблица могла отображать данные, которые пользователь заполняет или изменяет, даже после того, как таблица была обновлена в результате вызова ajax.

Есть какие-нибудь советы? Мне нужна помощь. Я действительно не знаю, как это сделать. Ваша помощь будет очень признательна!

введите описание изображения здесь

Это мой код.

 lt;p:panelGrid styleClass="panel"gt;  lt;p:rowgt;  lt;p:column styleClass="ui-widget-header"gt;  lt;p:outputLabel value="No." /gt;  lt;/p:columngt;   lt;p:column styleClass="ui-widget-header"gt;  lt;p:outputLabel value="OrderDate" /gt;  lt;/p:columngt;  lt;p:column styleClass="ui-widget-header"gt;  lt;p:outputLabel value="TotalSales" /gt;  lt;/p:columngt;  lt;/p:rowgt;  lt;ui:repeat value="#{myBean.dataList}" var="list"gt;  lt;p:rowgt;  lt;p:column styleClass="ui-widget-header"gt;  lt;p:outputLabel value="#{list.orderNo}" /gt;  lt;/p:columngt;  lt;p:columngt;  lt;p:inputText value="#{list.orderDate}"/gt;  lt;/p:columngt;  lt;p:column gt;  lt;p:inputText value="#{list.totalSales}" gt;  lt;p:ajax event="blur" update="@(.panel)" listener="#{myBean.addLine(orderNo)}"/gt;  lt;/p:inputTextgt;  lt;/p:columngt;  lt;/p:rowgt;  lt;/ui:repeatgt;  lt;/p:panelGridgt;  

Backing Bean

 @Named @SessionScoped public class myBean extends UpBaseBean {   @Setter @Getter private orderDTO dataList = new orderDTO();  . . . . .  /**  *   */ @UpBackingBean public void addLine(final int orderNo) {    salesDTO dto = new salesDTO();   dto.setShikanName(shikanName);  dto.setOrderDate("");  dto.setTotalSales("");  dataList.getSalesData.add(dto);   }   }  

DTO

 @Getter  @Setter  public class orderDTO extends BaseDTO {   Listlt;salesDTOgt; salesData = new ArrayList();  }   @Getter  @Setter  public class salesDTO extends BaseDTO {   public int orderNo;   public Date orderDate;   public String totalSales; }  

Комментарии:

1. В p:ajax вы обновляете всю панель, не обрабатывая значение в(), поэтому они возвращаются в состояние на стороне сервера. Вы можете обработать каждое inputText изменение события или обработать всю форму в вашем ajax. Вам следует также рассмотреть возможность переключения на другой компонент, возможно, на редактируемую таблицу данных.

2. Спасибо! Я заставил его работать, добавив процесс в компонент