Java selectBooleanCheckbox在过滤数据表更新后未更新

Java selectBooleanCheckbox在过滤数据表更新后未更新,java,jsp,primefaces,Java,Jsp,Primefaces,我们有一个包含3列的数据表,第一列有一个selectBooleanCheckbox,最后两列有outputText 我们还为此表设置了一个过滤器,根据过滤器布尔值显示或隐藏行 用于数据表的实体由以下3列属性组成:1个布尔值,2个字符串。见下文 问题是,当我们在第一列中选择一个筛选器(如“是”)并单击“更新”按钮时,表将被更新,但未应用筛选器,因此表筛选器不会被刷新 复制步骤: 加载页面,不要修改任何复选框 选择过滤器“是” 按更新按钮 数据表未更新 这是我的实体。java 公共类实体{ 布尔启用

我们有一个包含3列的数据表,第一列有一个selectBooleanCheckbox,最后两列有outputText

我们还为此表设置了一个过滤器,根据过滤器布尔值显示或隐藏行

用于数据表的实体由以下3列属性组成:1个布尔值,2个字符串。见下文

问题是,当我们在第一列中选择一个筛选器(如“是”)并单击“更新”按钮时,表将被更新,但未应用筛选器,因此表筛选器不会被刷新

复制步骤:

  • 加载页面,不要修改任何复选框
  • 选择过滤器“是”
  • 按更新按钮
  • 数据表未更新
  • 这是我的实体。java

    公共类实体{
    布尔启用;
    私有字符串标签;
    私有字符串描述;
    公共实体(启用布尔值、字符串标签、字符串描述){
    this.enabled=已启用;
    this.label=标签;
    this.description=描述;
    }
    公共布尔getEnabled(){
    返回启用;
    }
    已启用公共void集(已启用布尔值){
    this.enabled=已启用;
    }
    公共字符串getLabel(){
    退货标签;
    }
    公共void setLabel(字符串标签){
    this.label=标签;
    }
    公共字符串getDescription(){
    返回说明;
    }
    公共void集合描述(字符串描述){
    this.description=描述;
    }
    }
    
    这是我的简单豆子

    import java.util.ArrayList;
    导入java.util.List;
    导入org.springframework.context.annotation.Scope;
    导入org.springframework.stereotype.Controller;
    @控制器
    @范围(“视图”)
    公共类TestBean{
    私人名单;
    公共TestBean(){
    列表=新的ArrayList();
    /*填充示例*/
    添加(新实体(正确,“账簿”,“这是C账簿”);
    列表。添加(新实体(假,“屏幕”,“21\“HP屏幕”);
    添加(新实体(真,“游戏”,“你赢了100万”);
    }
    /*
    *更新列表,在实际应用程序中,它稍微复杂一点
    *但是我简化了它,这个问题对于这些东西也是可以重现的。
    */
    公共无效更新(){
    实体;
    /*“禁用”第三个,因为我们没有赢*/
    实体=list.get(2);
    实体.setEnabled(false);
    }
    公共列表getList(){
    退货清单;
    }
    公共无效集合列表(列表){
    this.list=列表;
    }
    }
    
    这是我的过滤布尔值的小bean

    import java.io.Serializable;
    导入java.util.ArrayList;
    导入java.util.List;
    导入javax.faces.context.FacesContext;
    导入javax.faces.model.SelectItem;
    导入org.springframework.context.annotation.Scope;
    导入org.springframework.stereotype.Controller;
    /**
    *类BooleanListBean。
    */
    @控制器
    @范围(“会议”)
    @抑制警告(“串行”)
    公共类BooleanListBean实现了可序列化{
    /**
    *实例化一个新的布尔列表bean。
    */
    公共BooleanListBean(){
    超级();
    }
    /**
    *获取选项。
    * 
    *@返回选项
    */
    public SelectItem[]获取选项(){
    最终列表选项=新建ArrayList();
    最终FacesContext FacesContext=FacesContext.getCurrentInstance();
    选项。添加(新选择项(“,”选择“);
    添加(新的SelectItem(Boolean.FALSE.toString(),“No”);
    添加(新的SelectItem(Boolean.TRUE.toString(),“Yes”);
    返回选项。toArray(新建SelectItem[0]);
    }
    }
    
    最后是xhtml文件


    我认为dataTable应该有筛选值标记

    filteredValue="#{testBean.filteredList}"
    

    在testBean中添加一个过滤器列表并引用它。

    这看起来像是一个代码审查项目。除非你能缩小这个问题的范围,否则很少有人会想彻底解决这个问题。你为什么用JSP标记这个问题?你根本没有用JSP。XHTML文件来自它的后续Facelets。你在那里使用的XML标记来自JSF fra我的工作。