JSF - ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception

Bom dia,

Pessoal estou iniciando no JSF e estou com alguns problemas e gostaria de saber se vocês teriam como me ajudar.
Tenho uma pagina em que não consegue encontrar dois dos meu metodos e não estou entendendo o porquê?
quando execultto minha aplicação aparece o seguinte erro!
ERROR [[Faces Servlet]] Servlet.service() for servlet Faces Servlet threw exception
Vou postar a pagina com o erro!
Pagina Xhtml

<h:panelGroup> <h:selectOneMenu value="#{servidorFuncionalBean.servidorFuncional.tipoServidor.id}"> <f:selectItem itemLabel="Selecione um item!"/> <t:selectItems value="#{servidorFuncionalBean.getListaDeTipoServidor}" var="tipoServidor" itemValue="#{tipoServidor.id}" itemLabel="#{tipoServidor.descricao}"/> </h:selectOneMenu> </h:panelGroup>

Pagina ServidorFuncionalBean

[code]package br.jus.trt7.identidadefuncional.view.beans;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import javax.faces.event.ActionEvent;

import br.jus.tr7.identidadefuncional.report.ReportUtils;
import br.jus.trt7.identidadefuncional.facade.LotacaoFacade;
import br.jus.trt7.identidadefuncional.facade.ServidorFuncionalFacade;
import br.jus.trt7.identidadefuncional.facade.TipoServidorFacade;
import br.jus.trt7.identidadefuncional.model.Lotacao;
import br.jus.trt7.identidadefuncional.model.Pessoa;
import br.jus.trt7.identidadefuncional.model.Servidor;
import br.jus.trt7.identidadefuncional.model.ServidorFuncional;
import br.jus.trt7.identidadefuncional.model.TipoServidor;

public class ServidorFuncionalBean extends GenericBean {

private static final long serialVersionUID = -6433064227190250426L;

private Integer scrollerPage = 1;

private boolean exibeResultados;

private ServidorFuncional servidorFuncional = new ServidorFuncional();

private ServidorFuncional servidorSelecionado;

private String motivoExclusao;

private List<ServidorFuncional> servidoresFuncionaisEncontrados = new ArrayList<ServidorFuncional>();

public ServidorFuncionalBean(){
	Servidor servidor = new Servidor();
	servidor.setPessoa(new Pessoa());
	servidorFuncional.setServidor(servidor);
	servidorFuncional.setLotacao(new Lotacao());
	servidorFuncional.setTipoServidor(new TipoServidor());
}

/**
 * Realiza a consulta pelas identidades funcionais.
 */
public String consultar() {
	
	if (validarCampos()) {
		servidoresFuncionaisEncontrados = ServidorFuncionalFacade.getInstance().recuperaServidoresPorFiltro(servidorFuncional);
		setExibeResultados(true);
	} else {
		addErrorMessage("Nenhum campo preenchido! É obrigatório preencher no mínimo um dos campos.");
		setExibeResultados(false);
	}
	scrollerPage = 1;
	return null;
}

/**
 * Validação do formulário dos componentes do formulário
 * 
 * @return Resultado da validação.
 */
private Boolean validarCampos() {
	return true;
}

/**
 * Método para limpar os campos preenchidos no formulário
 */
public void limpar(ActionEvent event) {
	servidorFuncional = new ServidorFuncional();
	Servidor servidor = new Servidor();
	servidor.setPessoa(new Pessoa());
	servidorFuncional.setServidor(servidor);
	servidorFuncional.setLotacao(new Lotacao());
	servidorFuncional.setTipoServidor(new TipoServidor());
	
	servidoresFuncionaisEncontrados = new ArrayList<ServidorFuncional>();
}

public void detalhar(){
	List<ServidorFuncional> aux = new ArrayList<ServidorFuncional>();
	aux.addAll(servidoresFuncionaisEncontrados);
}

public void excluir(ActionEvent event) {
		Iterator<ServidorFuncional> it = servidoresFuncionaisEncontrados.iterator();
		ServidorFuncional servidorFuncional = null;

		while(it.hasNext()){
		   servidorFuncional = it.next();
		   if(servidorFuncional.getServidor().getMatricula() == servidorSelecionado.getServidor().getMatricula()){
		        it.remove();
		        addInfoMessage("A Identidade Funcional de matrícula "+servidorFuncional.getServidor().getMatricula()+", foi excluída com sucesso!");
		        break;
		   }

		} 
}

public void imprimir(){
	try {
		List<ServidorFuncional> servidoresFuncionais = getServidoresFuncionaisEncontrados();
		//Retira as identidades que não foram selecionadas
		for (Iterator<ServidorFuncional> itServidoresFuncionais = servidoresFuncionais.iterator(); itServidoresFuncionais.hasNext();) {
			ServidorFuncional servidorFuncional = itServidoresFuncionais.next();
			if(!servidorFuncional.getSelecionado()){
				itServidoresFuncionais.remove();
			}
			
		}
		//Envia as identidades selecionadas para impressão
		ReportUtils report = new ReportUtils();
		for (ServidorFuncional servidorFuncional : servidoresFuncionais) {
			String nomeRelatorio = "";

// switch (servidorFuncional.getTipoServidor().getId()) {
// case SERVIDOR1:
// nomeRelatorio = “OficialJusticaAvaliadorFederal”;
// break;
//
// case SERVIDOR2:
// nomeRelatorio = “InspetorSegurancaJudiciaria”;
// break;
// }
Map<String, Long> parametro = new HashMap<String, Long>();
parametro.put(“ID”, servidorFuncional.getId());
report.relatorio(nomeRelatorio, parametro, null);
}
} catch (Exception e) {
addErrorMessage(“Erro na geração do relatório”);
e.printStackTrace();
}
}

public void setServidorFuncional(ServidorFuncional identidade) {
	this.servidorFuncional = identidade;
}

public ServidorFuncional getServidorFuncional() {
	return servidorFuncional;
}

public void setServidoresFuncionaisEncontrados(
		List<ServidorFuncional> servidoresFuncionaisEncontrados) {
	this.servidoresFuncionaisEncontrados = servidoresFuncionaisEncontrados;
}

public List<ServidorFuncional> getServidoresFuncionaisEncontrados() {
	return servidoresFuncionaisEncontrados;
}

public void setExibeResultados(boolean exibeResultados) {
	this.exibeResultados = exibeResultados;
}

public boolean isExibeResultados() {
	return exibeResultados;
}


public List<TipoServidor> getListaDeTipoServidor() {
	return TipoServidorFacade.getInstance().obterListaTipoServidor();
}

public List<Lotacao> getListaDeLotacao() {
	return LotacaoFacade.getInstance().obterLotacoes();
}

public Integer getScrollerPage() {
	return scrollerPage;
}

public void setScrollerPage(Integer scrollerPage) {
	this.scrollerPage = scrollerPage;
}


public void setServidorSelecionado(ServidorFuncional servidorFuncionalSelecionado) {
	this.servidorSelecionado = servidorFuncionalSelecionado;
}

public ServidorFuncional getServidorSelecionado() {
	return servidorSelecionado;
}

public void setMotivoExclusao(String motivoExclusao) {
	this.motivoExclusao = motivoExclusao;
}

public String getMotivoExclusao() {
	return motivoExclusao;
}

}
[/code]

Pagina faces-config.xml

<?xml version="1.0" encoding="UTF-8"?>
<faces-config version="1.2" xmlns="http://java.sun.com/xml/ns/javaee"
 xmlns:xi="http://www.w3.org/2001/XInclude"
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-facesconfig_1_2.xsd">
 <managed-bean>
  <managed-bean-name>servidorFuncionalBean</managed-bean-name>
  <managed-bean-class>br.jus.trt7.identidadefuncional.view.beans.ServidorFuncionalBean</managed-bean-class>
  <managed-bean-scope>request</managed-bean-scope>
 </managed-bean>
 <!-- Regras de Navegacao 
 <navigation-rule>
  <navigation-case>
   <from-action>#{identidadeFuncionalBean.consultar}</from-action>
   <from-outcome>sucesso</from-outcome>
   <to-view-id>/manterIdentidadeFuncional/listaIdentidadesFuncionais.xhtml</to-view-id>
   <redirect/>
  </navigation-case>
 </navigation-rule>
-->
 <!-- Application -->
	<application>
		<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
		<locale-config>
			<default-locale>pt_BR</default-locale>
		</locale-config>
	</application>
</faces-config>

org.apache.jasper.JasperException: javax.servlet.ServletException: /manterIdentidadeFuncional/identidadeFuncional.xhtml @90,98 value="#{servidorFuncionalBean.getListaDeTipoServidor}": Property 'getListaDeTipoServidor' not found on type br.jus.trt7.identidadefuncional.view.beans.ServidorFuncionalBean
	org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:521)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:397)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:336)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:265)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:803)
	org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)

Por favor alguem me diga o porque de so o metodo servidorFuncionalBean.getListaDeTipoServidor não é vizualizado! :shock:

Tudo errado! hehehe brincadeira! Faz parte, meu amigo! Mas assim ó, dando uma olhada no teu código, percebi o seguinte no teu .xhtml mas existe alguma tag-lib “t” declarada? Coloca ae todo o teu .xhtml se ele for um fragmento/composition tu põe tudo.

Abraços,

Daniel

Tardessss …

Então cara, acho que é o seguinte.

Para trabalhar com o combo voce precisa passar um list de SelectItem - Ex. list. Você não pode passar direto um List a não ser que você faça um converter

manja implementar um converter JSF ?? é bem simples, só precisa implementar dois métodos …

mas para um teste rapido faça o seguinte. Exemplo:

List<SelectItem> selectItems = new ArrayList<SelectItem>();
for (TipoServidor tipoServidor: listaTipoServidor)	{
	
selectItems.add(new SelectItem(tipoServidor, tipoServidor.getDescricao())); 

// tipoServidor seria o objeto que voce receberá depois que o usuario escolher uma opcao no combo
// getDescricao() seria um possivel atributo para aparecer no combo
}
return selectItems 

Acho que é mais ou menos isso… faça esse teste no seu método getListaDeTipoServidor()

[]'s

Galera,

Ja vi qual era o problema, estava chamando o metodo getListaDeLotacao() e getListaDeTipoServidor() sem os parenteses so que ele não aceita.

  • o JSF só reconhece como método se retornar String, se ele não retornar String ele vai procurar como se fosse uma propriedade e não um método, ai o colocando o parentese ele pega o método.
  • outra dica é colocar a pasta META-INF que possui o persistence.xml na pasta JavaSources, mas é claro somente para quem utiliza o JPA como eu hauhauhauhauahua.

Então o codigo ficou assim agora…

<h:panelGroup>
					<h:selectOneMenu value="#{servidorFuncionalBean.servidorFuncional.lotacao.id}">
						<f:selectItem itemLabel="Selecione um item!"/>
						<t:selectItems value="#{servidorFuncionalBean.getListaDeLotacao()}"
							var="lotacao" itemValue="#{lotacao.id}" itemLabel="#{lotacao.descricao}"/>
					</h:selectOneMenu>
				</h:panelGroup>
				
				<h:panelGroup>
						<h:selectOneMenu value="#{servidorFuncionalBean.servidorFuncional.tipoServidor.id}">
							<f:selectItem itemLabel="Selecione um item!"/>
							<t:selectItems value="#{servidorFuncionalBean.getListaDeTipoServidor()}"
								var="tipoServidor" itemValue="#{tipoServidor.id}" itemLabel="#{tipoServidor.descricao}"/>
						</h:selectOneMenu>
				</h:panelGroup>

VLW pessoal. 8)

Valeu, Bruno! Forte abraço!