托管bean为空的问题,但系统无法工作

问题描述 投票:0回答:0

我有一个带有 JSF 和 PrimeFaces 的 Java EE Web 应用程序。一切工作正常,但我在特定页面上遇到错误,指出托管 bean 为空,就好像无法正确注入一样。然而,一切似乎都配置正确。有趣的是,当我进一步调查时,我注意到在特定行上添加 System.out.println("TESTEEEE") 语句可以使应用程序正常工作。

请注意,这是我从另一个项目克隆的项目,我只做了一些更改。在原始项目中,一切正常。有人可以帮助我吗?

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;

import org.apache.commons.lang.StringUtils;


@ManagedBean(name = "ordEquipeUsuarioMB")
@ViewScoped
public class OrdEquipeUsuarioMB implements Serializable {

    private static final long serialVersionUID = 462049997972941163L;

    private OrdEquipeDao equipeDao;
    private SegUsuarioDao usuarioDao;
    private OrdEquipeUsuarioDao equipeUsuarioDao;

    private List<OrdEquipe> listaEquipe;
    private List<OrdEquipeUsuario.TipoMembroEquipe> listaTipoMembroEquipe;
    private List<SegUsuario> listaUsuarioDisponivel;
    private List<SegUsuario> listaUsuarioCadastrado;
    private List<SegUsuario> listaUsuarioAdicionado;
    private List<SegUsuario> listaUsuarioRemovido;
    private List<SegUsuario> listaUsuarioPorEquipe;

    private OrdEquipe equipeSelecionada;
    private SegUsuario usuarioSelecionado;
    private String tipoMembroEquipeSelecionado;

    @PostConstruct
    public void metodoInicial() {
        buscarEquipes();
        for (OrdEquipeUsuario.TipoMembroEquipe tipo : OrdEquipeUsuario.TipoMembroEquipe.values()) {
            getListaTipoMembroEquipe().add(tipo);
        }
    }

    private void buscarEquipes() {
        try {
            setListaEquipe(getEquipeDao().getTodos("nome"));
        } catch (Excecoes e) {
            Mensagem.erro(e.getMessage());
        }
    }

    public void buscarUsuarios() {
        limpar();

        try {
            if (getEquipeSelecionada().getId() != null && StringUtils.isNotBlank(getTipoMembroEquipeSelecionado())) {
                OrdEquipeUsuario equipeUsuarioFiltro = new OrdEquipeUsuario();
                equipeUsuarioFiltro.setOrdEquipe(getEquipeSelecionada());
                List<OrdEquipeUsuario> listaEquipeUsuario = getEquipeUsuarioDao()
                        .getListaEquipeUsuario(equipeUsuarioFiltro);

                setListaUsuarioPorEquipe(listaEquipeUsuario.stream().map(equipeUsuario -> equipeUsuario.getSegUsuario())
                        .sorted().collect(Collectors.toList()));

                setListaUsuarioCadastrado(listaEquipeUsuario.stream()
                        .filter(equipeUsuario -> equipeUsuario.getTagTipo().equals(getTipoMembroEquipeSelecionado()))
                        .map(equipeUsuario -> equipeUsuario.getSegUsuario()).sorted().collect(Collectors.toList()));

                System.out.println("TESTEEEE");
                setListaUsuarioDisponivel(getUsuarioDao().getUsuariosGestor("S"));
                for (SegUsuario usuarioCadastrado : getListaUsuarioCadastrado()) {
                    getListaUsuarioDisponivel().remove(usuarioCadastrado);
                }
            }
        } catch (Excecoes e) {
            Mensagem.erro(e.getMessage());
        }
    }

    public void salvar() {
        try {
            if (!getListaUsuarioRemovido().isEmpty()) {
                getEquipeUsuarioDao().removerUsuariosDaEquipe(getListaUsuarioRemovido(), getEquipeSelecionada());
            }

            if (!getListaUsuarioAdicionado().isEmpty()) {
                List<OrdEquipeUsuario> listaEquipeUsuario = new ArrayList<OrdEquipeUsuario>();
                for (SegUsuario usuarioCadastro : getListaUsuarioAdicionado()) {
                    OrdEquipeUsuario equipeUsuario = new OrdEquipeUsuario();
                    equipeUsuario.setOrdEquipe(getEquipeSelecionada());
                    equipeUsuario.setSegUsuario(usuarioCadastro);
                    equipeUsuario.setTagTipo(getTipoMembroEquipeSelecionado());

                    listaEquipeUsuario.add(equipeUsuario);
                }

                getEquipeUsuarioDao().salvarLista(listaEquipeUsuario);
            }

            Mensagem.informacao("alterarSucesso");
            buscarUsuarios();
        } catch (Excecoes e) {
            Mensagem.erro(e.getMessage());
        }
    }

    public void adicionar() {
        getListaUsuarioCadastrado().add(getUsuarioSelecionado());
        getListaUsuarioDisponivel().remove(getUsuarioSelecionado());

        if (getListaUsuarioRemovido().contains(getUsuarioSelecionado())) {
            getListaUsuarioRemovido().remove(getUsuarioSelecionado());
        } else {
            getListaUsuarioAdicionado().add(getUsuarioSelecionado());

            if (getListaUsuarioPorEquipe().contains(getUsuarioSelecionado())) {
                getListaUsuarioPorEquipe().remove(getUsuarioSelecionado());
                getListaUsuarioRemovido().add(getUsuarioSelecionado());
            }
        }
    }

    public void adicionarTodos() {
        getListaUsuarioCadastrado().addAll(getListaUsuarioDisponivel());

        for (SegUsuario usuario : getListaUsuarioDisponivel()) {
            if (getListaUsuarioRemovido().contains(usuario)) {
                getListaUsuarioRemovido().remove(usuario);
            } else {
                getListaUsuarioAdicionado().add(usuario);
            }
        }

        getListaUsuarioDisponivel().clear();
    }

    public void remover() {
        getListaUsuarioCadastrado().remove(getUsuarioSelecionado());
        getListaUsuarioDisponivel().add(getUsuarioSelecionado());

        if (getListaUsuarioAdicionado().contains(getUsuarioSelecionado())) {
            getListaUsuarioAdicionado().remove(getUsuarioSelecionado());
        } else {
            getListaUsuarioRemovido().add(getUsuarioSelecionado());
        }
    }

    public void removerTodos() {
        getListaUsuarioDisponivel().addAll(getListaUsuarioCadastrado());

        for (SegUsuario usuario : getListaUsuarioCadastrado()) {
            if (getListaUsuarioAdicionado().contains(usuario)) {
                getListaUsuarioAdicionado().remove(usuario);
            } else {
                getListaUsuarioRemovido().add(usuario);
            }
        }

        getListaUsuarioCadastrado().clear();
    }

    public void cancelar() {
        buscarUsuarios();
    }

    private void limpar() {
        getListaUsuarioCadastrado().clear();
        getListaUsuarioDisponivel().clear();
        getListaUsuarioAdicionado().clear();
        getListaUsuarioRemovido().clear();
        getListaUsuarioPorEquipe().clear();
        setUsuarioSelecionado(null);
    }

    // getters e setters
    public OrdEquipeDao getEquipeDao() {
        if (equipeDao == null) {
            equipeDao = new OrdEquipeDao();
        }
        return equipeDao;
    }

    public SegUsuarioDao getUsuarioDao() {
        if (usuarioDao == null) {
            usuarioDao = new SegUsuarioDao();
        }
        return usuarioDao;
    }

    public OrdEquipeUsuarioDao getEquipeUsuarioDao() {
        if (equipeUsuarioDao == null) {
            equipeUsuarioDao = new OrdEquipeUsuarioDao();
        }
        return equipeUsuarioDao;
    }

    public List<OrdEquipe> getListaEquipe() {
        if (listaEquipe == null) {
            listaEquipe = new ArrayList<OrdEquipe>();
        }
        return listaEquipe;
    }

    public void setListaEquipe(List<OrdEquipe> listaEquipe) {
        this.listaEquipe = listaEquipe;
    }

    public List<OrdEquipeUsuario.TipoMembroEquipe> getListaTipoMembroEquipe() {
        if (listaTipoMembroEquipe == null) {
            listaTipoMembroEquipe = new ArrayList<OrdEquipeUsuario.TipoMembroEquipe>();
        }
        return listaTipoMembroEquipe;
    }

    public List<SegUsuario> getListaUsuarioDisponivel() {
        if (listaUsuarioDisponivel == null) {
            listaUsuarioDisponivel = new ArrayList<SegUsuario>();
        }
        return listaUsuarioDisponivel;
    }

    public void setListaUsuarioDisponivel(List<SegUsuario> listaUsuarioDisponivel) {
        this.listaUsuarioDisponivel = listaUsuarioDisponivel;
    }

    public List<SegUsuario> getListaUsuarioCadastrado() {
        if (listaUsuarioCadastrado == null) {
            listaUsuarioCadastrado = new ArrayList<SegUsuario>();
        }
        return listaUsuarioCadastrado;
    }

    public void setListaUsuarioCadastrado(List<SegUsuario> listaUsuarioCadastrado) {
        this.listaUsuarioCadastrado = listaUsuarioCadastrado;
    }

    public List<SegUsuario> getListaUsuarioAdicionado() {
        if (listaUsuarioAdicionado == null) {
            listaUsuarioAdicionado = new ArrayList<SegUsuario>();
        }
        return listaUsuarioAdicionado;
    }

    public List<SegUsuario> getListaUsuarioRemovido() {
        if (listaUsuarioRemovido == null) {
            listaUsuarioRemovido = new ArrayList<SegUsuario>();
        }
        return listaUsuarioRemovido;
    }

    public List<SegUsuario> getListaUsuarioPorEquipe() {
        if (listaUsuarioPorEquipe == null) {
            listaUsuarioPorEquipe = new ArrayList<SegUsuario>();
        }
        return listaUsuarioPorEquipe;
    }

    public void setListaUsuarioPorEquipe(List<SegUsuario> listaUsuarioPorEquipe) {
        this.listaUsuarioPorEquipe = listaUsuarioPorEquipe;
    }

    public OrdEquipe getEquipeSelecionada() {
        if (equipeSelecionada == null) {
            equipeSelecionada = new OrdEquipe();
        }
        return equipeSelecionada;
    }

    public void setEquipeSelecionada(OrdEquipe equipeSelecionada) {
        this.equipeSelecionada = equipeSelecionada;
    }

    public SegUsuario getUsuarioSelecionado() {
        if (usuarioSelecionado == null) {
            usuarioSelecionado = new SegUsuario();
        }
        return usuarioSelecionado;
    }

    public void setUsuarioSelecionado(SegUsuario usuarioSelecionado) {
        this.usuarioSelecionado = usuarioSelecionado;
    }

    public String getTipoMembroEquipeSelecionado() {
        return tipoMembroEquipeSelecionado;
    }

    public void setTipoMembroEquipeSelecionado(String tipoMembroEquipeSelecionado) {
        this.tipoMembroEquipeSelecionado = tipoMembroEquipeSelecionado;
    }
}

<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:p="http://primefaces.org/ui"
                template="/templateSentinel/templateNovo.xhtml">

    <ui:define name="content">
        <p:ajaxStatus oncomplete="PF('tabelaCadastrado').filter();PF('tabelaDisponivel').filter();" />
    
        <h:form id="formOrdEquipeUsuario">
            <div class="Container100 BorBotGray newCrumb">
                <p:breadCrumb styleClass="Animated05">
                    <p:menuitem value="#" url="#" styleClass="Animated05"/>
                    <p:menuitem value="#{msgs.ordemServico}" url="#" styleClass="Animated05"/>
                    <p:menuitem value="#{msgs.gerenciamento}" url="#" styleClass="Animated05"/>
                    <p:menuitem value="#{msgs.usuarioPorEquipe}" url="#" styleClass="Animated05"/>
                </p:breadCrumb>
            </div>
            
            <span class="clear" />
                    
            <div class="main_content">
                <p:outputPanel id="painelGerenciamentoEquipeUsuario">
                    <div class="headerTitle container_grid">
                        <div class="grid_12 last">
                            <h4>
                                <i class="icon-clipboard" />
                                <span>
                                    <h:outputText value="#{msgs.gerenciamentoUsuarioPorEquipe}" />
                                </span>
                            </h4>
                            <p:separator />
                        </div>
                    </div>
                 
                    <span class="clear" />
            
                    <div class="container_grid newForm">
                        <div class="row_grid">
                        
                            <div class="grid_4">
                                <p:outputLabel styleClass="widthFull" value="#{msgs.equipe}" for="comboEquipe" />
                                <span class="clear" />
                                <p:selectOneMenu id="comboEquipe" label="#{msgs.equipe}" value="#{ordEquipeUsuarioMB.equipeSelecionada}" 
                                    filter="true" filterMatchMode="contains" converter="ConverterDefault" styleClass="widthFull-select">
                                    <f:selectItem itemLabel="#{msgs.selecionarOpcao}" />
                                    <f:selectItems value="#{ordEquipeUsuarioMB.listaEquipe}" var="equipe" itemLabel="#{equipe.nome}" itemValue="#{equipe}" />
                                    <p:ajax event="change" listener="#{ordEquipeUsuarioMB.buscarUsuarios}" update=":growl painelGerenciamentoEquipeUsuario" />
                                </p:selectOneMenu>
                                <span class="clear" />
                                <p:overlayPanel for="comboEquipe" rendered="#{facesContext.validationFailed}" showEvent="mouseover" hideEvent="mouseout" at="right" my="left">
                                    <p:message for="comboEquipe" />
                                </p:overlayPanel>
                            </div>
                            
                            <div class="grid_4 last">
                                <p:outputLabel styleClass="widthFull" value="#{msgs.tipoMembroEquipe}" for="comboTipoMembroEquipe" />
                                <span class="clear" />
                                <p:selectOneMenu id="comboTipoMembroEquipe" label="#{msgs.tipoMembroEquipe}" value="#{ordEquipeUsuarioMB.tipoMembroEquipeSelecionado}" 
                                    filter="true" filterMatchMode="contains" styleClass="widthFull-select">
                                    <f:selectItem itemLabel="#{msgs.selecionarOpcao}" />
                                    <f:selectItems value="#{ordEquipeUsuarioMB.listaTipoMembroEquipe}" var="tipoMembroEquipe" itemLabel="#{tipoMembroEquipe.nome}" itemValue="#{tipoMembroEquipe.tag}" />
                                    <p:ajax event="change" listener="#{ordEquipeUsuarioMB.buscarUsuarios}" update=":growl painelGerenciamentoEquipeUsuario" />
                                </p:selectOneMenu>
                                <span class="clear" />
                                <p:overlayPanel for="comboTipoMembroEquipe" rendered="#{facesContext.validationFailed}" showEvent="mouseover" hideEvent="mouseout" at="right" my="left">
                                    <p:message for="comboTipoMembroEquipe" />
                                </p:overlayPanel>
                            </div>
                            
                        </div>
                        
                        <div class="row_grid">
                            <div class="grid_12 last">
                                
                                <p:commandButton id="botaoCancelar" value="#{msgs.botaoCancelar}" actionListener="#{ordEquipeUsuarioMB.cancelar}" 
                                    icon="fa fa-eraser Fs16 white" partialSubmit="true" styleClass="Fleft" update=":growl painelGerenciamentoEquipeUsuario"
                                    disabled="#{ordEquipeUsuarioMB.equipeSelecionada.id == null or empty ordEquipeUsuarioMB.tipoMembroEquipeSelecionado}" style="margin-right: 5px;">
                                    <f:param name="validateBean" value="false" />                   
                                </p:commandButton>
            
                                <p:commandButton id="botaoSalvar" value="#{msgs.botaoSalvar}" actionListener="#{ordEquipeUsuarioMB.salvar}" 
                                    icon="fa fa-save Fs16 white" partialSubmit="true" styleClass="Fright" update=":growl painelGerenciamentoEquipeUsuario" 
                                    disabled="#{ordEquipeUsuarioMB.equipeSelecionada.id == null or empty ordEquipeUsuarioMB.tipoMembroEquipeSelecionado}">
                                    <f:param name="validateBean" value="true" />                    
                                </p:commandButton>
                                    
                            </div>
                        </div>
                        
                        <div class="EmptyBox20" />
                         <span class="clear" />
                         
                         <p:outputPanel id="painelTabela">
                            <div class="headerTitle container_grid">
                            
                               <div class="row_grid" style="padding-top:0;">
                                    <div class="column-3-1 listDefault">
                                        <div class="headerTitle container_grid">
                                            <div class="grid_12 last">
                                                <h4>
                                                    <i class="icon-list-bullet" />
                                                    <span>
                                                        <h:outputText value="#{msgs.usuariosDisponiveis}" />
                                                    </span>
                                                </h4>
                                            </div>
                                        </div>
                                        
                                        <div class="EmptyBox5" />
                                
                                        <p:dataTable id="tabelaDisponivel" var="usuario" value="#{ordEquipeUsuarioMB.listaUsuarioDisponivel}" pageLinks="4"
                                        selectionMode="single" selection="#{ordEquipeUsuarioMB.usuarioSelecionado}" rowKey="#{usuario.id}" rows="10" paginator="true"
                                        paginatorTemplate="{CurrentPageReport}  {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                        rowsPerPageTemplate="10,50,100, #{fn:length(ordEquipeUsuarioMB.listaUsuarioDisponivel) > 100 ? fn:length(ordEquipeUsuarioMB.listaUsuarioDisponivel) : ''}"
                                        emptyMessage="#{msgs.nenhumRegistroEncontrado}"
                                        paginatorPosition="bottom" widgetVar="tabelaDisponivel"
                                        currentPageReportTemplate="#{msgs.paginacaoDataTable}">
                                            
                                            <p:column headerText="#{msgs.nome}" sortBy="#{usuario.nome}" filterBy="#{usuario.nome}" filterPosition="bottom" filterMatchMode="contains">
                                                <f:facet name="filter">
                                                    <p:inputText onkeyup="PF('tabelaDisponivel').filter()" placeholder="Filtro" />
                                                </f:facet>
                                        
                                                <h:outputText value="#{usuario.nome}" />
                                            </p:column>
                                            
                                            <p:ajax event="page" global="false" />
                                            <p:ajax event="filter" global="false" />
                                            <p:ajax event="rowSelect" listener="#{ordEquipeUsuarioMB.adicionar}" 
                                                update=":formOrdEquipeUsuario:painelGerenciamentoEquipeUsuario" delay="100" />
                                        </p:dataTable>
                                    </div>
                                    
                                    <div class="column-3-2 txtcenter">
                                        <br />
                                        <span class="clear" />
                                     
                                        <p:commandButton id="botaoAdicionaTodos" actionListener="#{ordEquipeUsuarioMB.adicionarTodos}"
                                        icon="fa fa-angle-double-right Fs16 white" partialSubmit="true" styleClass="dinline-block" update=":growl painelTabela"
                                        disabled="#{empty ordEquipeUsuarioMB.listaUsuarioDisponivel}"
                                        style="margin: 5px 0;" >
                                            <f:param name="validateBean" value="false" />
                                        </p:commandButton>
                                     
                                        <span class="clear" />
                                     
                                        <p:commandButton id="botaoRemoverTodos" actionListener="#{ordEquipeUsuarioMB.removerTodos}"
                                        icon="fa fa-angle-double-left Fs16 white" partialSubmit="true" styleClass="dinline-block" update=":growl painelTabela"
                                        disabled="#{empty ordEquipeUsuarioMB.listaUsuarioCadastrado}"
                                        style="margin: 5px 0;" >
                                            <f:param name="validateBean" value="false" />
                                        </p:commandButton>
                                    </div>
                                    
                                    <div class="column-3-3 listDefault">
                                        <div class="headerTitle container_grid">
                                            <div class="grid_12 last">
                                                <h4>
                                                    <i class="icon-list-bullet" />
                                                    <span>
                                                        <h:outputText value="#{msgs.usuariosCadastrados}" />
                                                    </span>
                                                </h4>
                                            </div>
                                        </div>
                                        
                                        <div class="EmptyBox5" />
                                
                                        <p:dataTable id="tabelaCadastrado" var="usuario" value="#{ordEquipeUsuarioMB.listaUsuarioCadastrado}" pageLinks="4"
                                        selectionMode="single" selection="#{ordEquipeUsuarioMB.usuarioSelecionado}" rowKey="#{usuario.id}" rows="10" paginator="true"
                                        paginatorTemplate="{CurrentPageReport} {FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink} {RowsPerPageDropdown}"
                                        rowsPerPageTemplate="10,50,100, #{fn:length(ordEquipeUsuarioMB.listaUsuarioCadastrado) > 100 ? fn:length(ordEquipeUsuarioMB.listaUsuarioCadastrado) : ''}"
                                        emptyMessage="#{msgs.nenhumRegistroEncontrado}" paginatorPosition="bottom" widgetVar="tabelaCadastrado"
                                        currentPageReportTemplate="#{msgs.paginacaoDataTable}">
            
                                            <p:column headerText="#{msgs.nome}" sortBy="#{usuario.nome}" filterBy="#{usuario.nome}" filterPosition="bottom" filterMatchMode="contains">
                                                <f:facet name="filter">
                                                    <p:inputText onkeyup="PF('tabelaCadastrado').filter()" placeholder="Filtro" />
                                                </f:facet>
            
                                                <h:outputText value="#{usuario.nome}" />
                                            </p:column>
                                            
                                            <p:ajax event="page" global="false" />
                                            <p:ajax event="filter" global="false" />
                                            <p:ajax event="rowSelect" listener="#{ordEquipeUsuarioMB.remover}" 
                                                update=":formOrdEquipeUsuario:painelGerenciamentoEquipeUsuario" delay="100" />
                                        </p:dataTable>
                                    </div>                              
                                </div>
                            </div>
                        </p:outputPanel>
                    </div>
                </p:outputPanel>
            </div>
        </h:form>
    </ui:define>
</ui:composition>

该项目对于另一个客户来说工作正常,我只更改图像,但在这里不起作用

java jsf primefaces null managed-bean
© www.soinside.com 2019 - 2024. All rights reserved.