Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
检索JSF dataTable中每行的InputText值,该值不是属性对象_Jsf_Jsf 2_Datatable_Attributes - Fatal编程技术网

检索JSF dataTable中每行的InputText值,该值不是属性对象

检索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

既然JSF dataTable中的每一行都不是我们在循环中迭代的对象中的属性,那么如何检索该行的inputText值呢

(此处0为默认值)。我无法更改类属性(此处为产品)


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;
                    }
                });