代码之家  ›  专栏  ›  技术社区  ›  Anika

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

  •  0
  • Anika  · 技术社区  · 6 年前

    我有一个应用程序从后台bean加载一个数据表。这个 datatable加载正确数量的行,但是它们是空的,如图所示。调试后我可以看到 利斯塔雷亚 面积

    Empty DataTable

    同一屏幕上的另一个数据表,称为 Membros公司

    Functioning Datatable

    区域.XHTML

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

    托管BEAN

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

    1 回复  |  直到 6 年前
        1
  •  1
  •   Seba López    6 年前

    dateTable的var称为teste( var="teste" h:outputText area .

    var="area" ,或更改 "#{teste.XXX}"

    推荐文章