检索JSF dataTable中每行的InputText值,该值不是属性对象
既然JSF dataTable中的每一行都不是我们在循环中迭代的对象中的属性,那么如何检索该行的inputText值呢 (此处0为默认值)。我无法更改类属性(此处为产品)检索JSF dataTable中每行的InputText值,该值不是属性对象,jsf,jsf-2,datatable,attributes,Jsf,Jsf 2,Datatable,Attributes,既然JSF dataTable中的每一行都不是我们在循环中迭代的对象中的属性,那么如何检索该行的inputText值呢 (此处0为默认值)。我无法更改类属性(此处为产品) Bean.class @ManagedBean ... public void submit() { List<Product> products = this.getProducts(); for(Product product : list) { System.o
Bean.class
@ManagedBean
...
public void submit() {
List<Product> products = this.getProducts();
for(Product product : list) {
System.out.println("Product.name : "+ Product.name );
System.out.println("Quantity : "+ ?? );
}
}
。。。
公开作废提交(){
List products=this.getProducts();
用于(产品:列表){
System.out.println(“Product.name:+Product.name”);
系统输出打印项次(“数量:+?);
}
}
将其绑定到地图
,并将产品
(或其ID)作为键
例如
私有列表产品;
私人地图数量;
@EJB
私人产品服务;
@施工后
公共void init(){
products=productService.list();
数量=新HashMap();
}
公开作废提交(){
用于(产品:产品){
长数量=数量。获取(产品);
系统输出打印项次(“数量:+数量);
}
}
//getter(这两个属性不需要setter)
与
您可以使用访问者模式获取值。大概是这样的:
table.visitTree(VisitContext.createVisitContext(faces),
new VisitCallback() {
@Override public VisitResult visit(VisitContext vc, UIComponent component) {
if (component.equals(quantity) && quantity.getValue() != null) {
cart.addItem(
(Product) table.getRowData(),
(Integer) quantity.getValue());
}
return VisitResult.ACCEPT;
}
});
你能在这里解释一下ProductService的内容吗?
private List<Product> products;
private Map<Product, Long> quantities;
@EJB
private ProductService productService;
@PostConstruct
public void init() {
products = productService.list();
quantities = new HashMap<>();
}
public void submit() {
for (Product product : products) {
Long quantity = quantities.get(product);
System.out.println("Quantity: " + quantity);
}
}
// Getters (no setters necessary for those two properties)
<h:inputText size="3" value="#{bean.quantities[product]}" />
table.visitTree(VisitContext.createVisitContext(faces),
new VisitCallback() {
@Override public VisitResult visit(VisitContext vc, UIComponent component) {
if (component.equals(quantity) && quantity.getValue() != null) {
cart.addItem(
(Product) table.getRowData(),
(Integer) quantity.getValue());
}
return VisitResult.ACCEPT;
}
});