我有一个带有 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>
该项目对于另一个客户来说工作正常,我只更改图像,但在这里不起作用