Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/jsf/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/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 启用选择时,必须实现数据模型。?_Jsf_Primefaces - Fatal编程技术网

Jsf 启用选择时,必须实现数据模型。?

Jsf 启用选择时,必须实现数据模型。?,jsf,primefaces,Jsf,Primefaces,我想在勾选复选框并按下删除按钮时从数据表中删除行 这是datatable代码段: <p:dataTable id="cartTable" lazy="true" scrollable="true" scrollHeight="115" selection="#{Cart_Check.selectedItems}" value="#{Cart_Check.cart}" var="cart" rowKey="#{cart.sheetno}"

我想在勾选复选框并按下删除按钮时从数据表中删除行

这是datatable代码段:

<p:dataTable id="cartTable" lazy="true" scrollable="true"
             scrollHeight="115" selection="#{Cart_Check.selectedItems}"
             value="#{Cart_Check.cart}" var="cart" rowKey="#{cart.sheetno}"
             style="widht:100%;margin-top:10%;margin-left:1%;margin-right:30px ;box-shadow: 10px 10px 25px #888888;">

    <f:facet name="header">  
        Checkbox Based Selection  
    </f:facet>

    <p:column selectionMode="multiple" style="width:2%">
    </p:column>

    //Here the columns are metion
    <f:facet name="footer">
        <p:commandButton id="viewButton" value="Remove" />
    </f:facet>
</p:dataTable>

基于复选框的选择
//这里的列是metion
这是支持bean

public class checkcart {
        private int items;
        private ArrayList<User_Cart> cart;
        private ArrayList<User_Cart> selectedItems;

    public checkcart() {
        getvalues();
    }
//getter and setter 

    public void getvalues() {
        FacesContext context = FacesContext.getCurrentInstance();
        HttpSession session = (HttpSession) context.getExternalContext()
                .getSession(false);
        System.out.println("Cart Request ::::" + session.getAttribute("regid"));

        try {
            Connection connection = BO_Connector.getConnection();
            String sql = "Select * from cart_orderinfo where usrregno=?";
            PreparedStatement ps = connection.prepareStatement(sql);
            ps.setString(1, (String) session.getAttribute("regid"));
            ResultSet rs = ps.executeQuery();
            cart = new ArrayList<>();
            while (rs.next()) {
                User_Cart user_cart = new User_Cart();
                user_cart.setSheetno(rs.getString("sheetno"));
                user_cart.setState_cd(rs.getString("state_cd"));
                user_cart.setDist_cd(rs.getString("dist_cd"));
                user_cart.setLicensetype(rs.getString("license_type"));
                user_cart.setFormat(rs.getString("sheet_format"));
                user_cart.setQuantity(rs.getInt("quantity"));
                cart.add(user_cart);
            }

        } catch (Exception ex) {
            System.out.println(ex);
        }

    }
}
公共类checkcart{
私人物品;
私人ArrayList购物车;
私有数组列表selectedItems;
公共checkcart(){
getvalues();
}
//接二连三
public void getvalues(){
FacesContext context=FacesContext.getCurrentInstance();
HttpSession会话=(HttpSession)上下文。getExternalContext()
.getSession(false);
System.out.println(“购物车请求:”+session.getAttribute(“regid”);
试一试{
Connection Connection=BO_Connector.getConnection();
String sql=“从购物车\订单信息中选择*,其中usrregno=?”;
PreparedStatement ps=connection.prepareStatement(sql);
ps.setString(1,(String)session.getAttribute(“regid”);
结果集rs=ps.executeQuery();
cart=newarraylist();
while(rs.next()){
用户购物车用户购物车=新用户购物车();
用户_cart.setSheetno(rs.getString(“sheetno”);
user_cart.setState_cd(rs.getString(“state_cd”);
user_cart.setDist_cd(rs.getString(“dist_cd”);
user_cart.setLicensetype(rs.getString(“许可证类型”);
user_cart.setFormat(rs.getString(“sheet_格式”);
用户设置数量(rs.getInt(“数量”);
cart.add(用户\购物车);
}
}捕获(例外情况除外){
系统输出打印项次(ex);
}
}
}
当我运行这个页面时,我得到以下错误 启用选择时,数据模型必须实现org.primefaces.model.selectabledatamodel。

但是,当我删除复选框时,它们没有错误,但没有复选框

如何做以及如何解决以下错误..请帮助

我想要这样的东西:

您只需要定义ListDataModel,如下所示

public class SD_User_Cart extends ListDataModel<User_Cart> implements SelectableDataModel<User_Cart> {

    public SD_User_Cart() {
    }

    public SD_User_Cart(List<User_Cart> data) {
        super(data);
    }

    @Override
    public User_Cart getRowData(String rowKey) {
        //In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data  

        List<User_Cart> rows = (List<User_Cart>) getWrappedData();

        for (User_Cart row : rows) {
            if (row.getCartId.toString().equals(rowKey)) {//CartId is the primary key of your User_Cart
                return row;
            }
        }

        return null;
    }

    @Override
    public Object getRowKey(User_Cart row) {
        return row.get.getCartId();
    }
}
private SD_User_Cart cart;
<p:column selectionMode="multiple" style="width:18px"/>
然后在p:datatable中定义选择,并添加一列,如下所示

public class SD_User_Cart extends ListDataModel<User_Cart> implements SelectableDataModel<User_Cart> {

    public SD_User_Cart() {
    }

    public SD_User_Cart(List<User_Cart> data) {
        super(data);
    }

    @Override
    public User_Cart getRowData(String rowKey) {
        //In a real app, a more efficient way like a query by rowKey should be implemented to deal with huge data  

        List<User_Cart> rows = (List<User_Cart>) getWrappedData();

        for (User_Cart row : rows) {
            if (row.getCartId.toString().equals(rowKey)) {//CartId is the primary key of your User_Cart
                return row;
            }
        }

        return null;
    }

    @Override
    public Object getRowKey(User_Cart row) {
        return row.get.getCartId();
    }
}
private SD_User_Cart cart;
<p:column selectionMode="multiple" style="width:18px"/>


希望这有帮助:)

您需要定义一个您的
私有数组列表selectedItems后台类中的数据成员
公共类checkcart
像这样
私有用户\u Cart[]selectedItems
并给出setter和getter方法,以使其能够工作。 我也面临同样的问题