我在jsf中有数据表。单击“添加”按钮后,根据选定的值加载列表。成功添加到列表中的元素。 添加到列表中,
public class CompanyProduct implements Serializable{
private static final long serialVersionUID = 1L;
@Id
@GeneratedValue
@Getter @Setter private int id;
@ManyToOne
@JoinColumn(name = "productId", referencedColumnName = "id")
@Getter @Setter private Product product;
@ManyToOne
@JoinColumn(name = "companyId", referencedColumnName = "id")
@Getter @Setter private Company company;
@Setter @Getter private Double price;
@Setter @Getter private Double sellingprice;
@Column
@Getter @Setter private Integer minQuantity;
@Column
@Getter @Setter private Integer maxQuantity;
@Column
@Getter @Setter private Integer leadTime;
@ManyToOne
@JoinColumn(name="uom_group_item_id")
@Getter @Setter private UomGroupItem uomGroupItem;
}
public void addToAssociation() {
List<CompanyProduct> tmpList = new ArrayList<CompanyProduct>(companyproducts);
for (Product p : selectedProducts) {
boolean flag = false;
for(CompanyProduct companyProduct: tmpList){
if(companyProduct.getUomGroupItem() == null && companyProduct.getProduct() != null && companyProduct.getProduct().getId().equals(p.getId())){
flag = true;
}
}
if(!flag){
addCompanyProducts(p, null);
}
addUomGroupProduct(p);
}
selectedProducts = null;
loadLazyProducts();
}
private void addCompanyProducts(Product p,UomGroupItem item){
CompanyProduct sg = new CompanyProduct();
sg.setProduct(p);
sg.setCompany(company);
sg.setPrice((double) (p.getMrp()==null?0f:p.getMrp()));
sg.setSellingprice((double) (p.getMrp()==null?0f:p.getMrp()));
if(item != null){
sg.setUomGroupItem(item);
}
companyproducts.add(sg);
}
但问题是,当我去删除时,执行操作,
for (CompanyProduct sg : selectedToBeAssociatedProducts) {
companyproducts.remove(sg);
}
但它在列表中删除了第一个匹配项。我也许知道这个问题的原因。提前谢谢。
如有任何疑问,请与我们联系。
答案 0 :(得分:2)
List.removeAll(Object value)
将删除每次出现的值List.remove(Object value)
将删除第一次出现的值List.remove(int position)
将移除位置答案 1 :(得分:1)
这是设计使用,请参阅List API
export interface ComponentOptions {
tag: string;
styleUrl?: string;
styleUrls?: string[] | ModeStyles;
styles?: string;
shadow?: boolean;
host?: HostMeta;
assetsDir?: string;
assetsDirs?: string[];
}
如果要删除所有匹配项,请使用List.removeAll,如下所示
remove(Object o)
Removes the first occurrence of the specified element from this list, if it is present (optional operation).
答案 2 :(得分:1)
尝试以下代码。如果它不起作用。请告诉我们原因。或者接受一个回答来关闭这个问题
list.removeAll(Collectoins.singelton(obj);
答案 3 :(得分:0)
如果要删除列表中的第一项。做list.remove(0)
如果要删除列表中与特定值对应的第一项。做list.remove(value)