Новичок здесь. У меня есть простой pojo (Pedido
) с одним свойством (referencia
) помимо id.
Используя форму ниже, я могу изменить pedido.referencia
через вводимый текст.
editListPedidoBean.salvar
просто распечатывает мой List<Pedido>
, и я вижу, что значение, которое я ввел в InputText, присутствует.
<h:form>
<ui:repeat value = "#{editListPedidoBean.listaPedidos}" var = "pedido">
<h:outputLabel value = "#{pedido.id}" />
<h:inputText value = "#{pedido.referencia}" />
<h:commandButton value = "salvar" action = "#{editListPedidoBean.salvar}" />
<br />
</ui:repeat>
</h:form>
Однако при использовании dataTable
значение, которое я ввожу во входной текст, не передается моему компоненту поддержки. editListPedidoBean.salvar
распечатает список со старым значением referencia
.
<h:form>
<h:dataTable value = "#{editListPedidoBean.listaPedidos}" var = "pedido">
<h:column>
<h:outputLabel value = "#{pedido.id}" />
</h:column>
<h:column>
<h:inputText value = "#{pedido.referencia}" />
</h:column>
<h:column>
<h:commandButton value = "salvar"
action = "#{editListPedidoBean.salvar}" />
</h:column>
</h:dataTable>
</h:form>
Как я могу эффективно связать свойство в моем bean-компоненте с полем в dataTable?
Обновлено: Вот мой боб:
package pedido;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.inject.Model;
import javax.inject.Inject;
@Model
public class EditListPedidoBean implements Serializable {
private List<Pedido> listaPedidos = new ArrayList<>();
@Inject
EditListPedidoDao dao;
public List<Pedido> getListaPedidos() {
listaPedidos = dao.getListaPedidos();
return listaPedidos;
}
public void setListaPedidos(List<Pedido> listaPedidos) {
this.listaPedidos = listaPedidos;
}
public String salvar() {
System.out.println(listaPedidos);//I'm just printing out the list to see if my bean can 'see' the changes made in the InputText before I try to persist it.
return null;
}
}
@Kukeltje Добавил bean-код. Я понимаю, к сожалению, я все еще не могу привязать простое свойство в dataTable ...
А добавление bean-компонента прояснило все. См. № 4 в stackoverflow.com/questions/2118656/…. И у вас также есть "проблема с производительностью", см. stackoverflow.com/questions/2090033/…
(дополнительное замечание: использование @Model
делает запрос ограниченным, поэтому вам нужно изменить две вещи)
@ViewScoped
+ @PostConstruct
сделали свою работу. Спасибо вам за помощь!
Пожалуйста, покажите свой bean-компонент (в стиле минимальный воспроизводимый пример), и все должно работать: stackoverflow.com/questions/355614/…. Имейте в виду, что без использования ajax в каждой строке есть кнопка, которая обновляет ВСЕ поля ввода во всех строках.