使用JSF2 Primefaces 6清空数据表单元格

使用JSF2 Primefaces 6清空数据表单元格,primefaces,datatable,jsf-2,java-ee-8,Primefaces,Datatable,Jsf 2,Java Ee 8,我有一个应用程序从支持bean加载数据表。子区域数据表加载正确数量的行,但如图所示,它们是空的。调试后,我可以看到支持bean(负责填充表)上的listaAreaatribute正在从数据库获取正确的数据区域是实体 同一屏幕上另一个名为Membros的数据表工作正常 AREA.XHTML 豆角 @Named @视域 公共类AreaMB实现了可序列化{ 私有字符串state=“search”; 私有字符串描述符; 私人区域=新区域(); 私人区域分区=新区域(); private-

我有一个应用程序从支持bean加载数据表。子区域数据表加载正确数量的行,但如图所示,它们是空的。调试后,我可以看到支持bean(负责填充表)上的listaAreaatribute正在从数据库获取正确的数据区域是实体

同一屏幕上另一个名为Membros的数据表工作正常

AREA.XHTML


豆角
@Named
@视域
公共类AreaMB实现了可序列化{
私有字符串state=“search”;
私有字符串描述符;
私人区域=新区域();
私人区域分区=新区域();
private-Usuario-Usuario=新的Usuario();
私有区域usuario AreaUsuario=新区域usuario();
私有列表列表;
私有列表列表;
私人名单;
私有列表listaMembro;
私人名单;
私有列表列表区域;
私有列表listaAreaVinculada;
@施工后
public void init()引发异常{
佩斯奎萨尔();
}
公共空间{
试一试{
listaArea=AreaService.getInstanceia().pesquisar(区域,0,0);
listaTipoArea=TipoAreaService.getInstanceia().getAll();
//长春藤属的一个区域
listaAreaVinculada=AreaService.getInstanceia().getAll();
if(listaAreaVinculada.contains(区域)){
listaAreaVinculada.移除(区域);
}
}捕获(例外e){
//TODO:处理异常
}
}
公共无效制备替代品(){
试一试{
state=“更新”;
AreaUsuario au=新AreaUsuario();
au.setIdArea(area.getIdArea());
listaAreaUsuario=AreaUsuarioService.getInstanceia().pesquisar(au,AreaUsuarioService.JOIN_USUARIO,0);
listaMembro=新的ArrayList();
适用于(aUsuario aUsuario地区:listaAreaUsuario){
添加(新的SelectItem(aUsuario.getIdUsuario(),aUsuario.getUsuario().getNome());
}
listaAreaVinculada.移除(区域);
ListAsuberas=AreaService.GetInstanceia().GetSubreas(area);
}捕获(例外e){
System.out.println(e.getStackTrace());
}
}

为什么它会带来空单元格?

日期表的变量称为teste(
var=“teste”
),而在值中使用的变量和在
h:outputText
中呈现的变量是
区域


您可以更改为
var=“area”
,或者将
h:outputText
的所有值和呈现更改为
“{teste.XXX}”

var=“teste”
替换为
var=“area”
,真不敢相信我没有看到!
  <div>
    <fieldset style="display:#{(areaMB.state == 'update')?'block':'none'}">
      <p:dataTable var="teste" id="dtTeste" value="#{areaMB.listaArea}" 
                   widgetVar="dtArea" paginator="true" 
                   paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}" 
                   rowsPerPageTemplate="20, 50, 100"
                   rows="20" rowKey="#{area.idArea}" 
                   emptyMessage="Nenhum registro" paginatorPosition="bottom">

        <p:column headerText="#" width="10%">
          <h:outputText value="#{area.idArea}" />
        </p:column>

        <p:column headerText="Descrição" width="40%" 
                  filterBy="#{area.descricao}" 
                  filterMatchMode="contains">
          <h:outputText value="#{area.descricao}" />
        </p:column>

        <p:column headerText="Sigla" width="20%">
          <h:outputText value="#{area.sigla}" />
        </p:column>

        <p:column headerText="Ativo" width="20%">
          <h:outputText value="ATIVO" rendered="#{area.flgAtivo==1}" />
          <h:outputText value="INATIVO" rendered="#{area.flgAtivo==0}" />
        </p:column>

        <p:column headerText="" width="10%" style="text-align:center">
          <p:commandButton action="#{areaMB.preparaAlterar}" 
                           update=":formu" 
                           icon="fa fa-pencil" style="margin-right:10px" 
                           title="Alterar" 
                           styleClass="btn btn-default btn-xs">
            <f:setPropertyActionListener target="#{areaMB.area}" value="#{area}" />
          </p:commandButton>
        </p:column>
      </p:dataTable>

    </fieldset>
  </div>
</h:panelGroup>
@Named
@ViewScoped
public class AreaMB implements Serializable {

    private String state = "search";
    private String descricao;
    private Area area = new Area();
    private Area subArea = new Area();
    private Usuario usuario = new Usuario();
    private AreaUsuario areaUsuario = new AreaUsuario();
    private List<Usuario> listaUsuario;
    private List<Area> listaArea;
    private List<AreaUsuario> listaAreaUsuario;
    private List<SelectItem> listaMembro;
    private List<Area> listaSubAreas;
    private List<TipoArea> listaTipoArea;
    private List<Area> listaAreaVinculada;

    @PostConstruct
    public void init() throws Exception {
        pesquisar();

    }

public void pesquisar() {
        try {
            listaArea = AreaService.getInstancia().pesquisar(area, 0, 0);
            listaTipoArea = TipoAreaService.getInstancia().getAll();

            //a area vinculada nao pode ser ela mesma
            listaAreaVinculada = AreaService.getInstancia().getAll();
            if (listaAreaVinculada.contains(area)) {
                listaAreaVinculada.remove(area);  
            }
        } catch (Exception e) {
            // TODO: handle exception
        }
    }

public void preparaAlterar() {
    try {
        state = "update";

        AreaUsuario au = new AreaUsuario();
        au.setIdArea(area.getIdArea());

        listaAreaUsuario = AreaUsuarioService.getInstancia().pesquisar(au, AreaUsuarioService.JOIN_USUARIO, 0);
        listaMembro = new ArrayList<SelectItem>();
        for (AreaUsuario aUsuario : listaAreaUsuario) {
            listaMembro.add(new SelectItem(aUsuario.getIdUsuario(), aUsuario.getUsuario().getNome()));
        }

        listaAreaVinculada.remove(area);  
        listaSubAreas = AreaService.getInstancia().getSubAreas(area);

    } catch (Exception e) {
        System.out.println(e.getStackTrace());
    }

}