Erro ao tentar implementar o controle de acesso

4 respostas
J

Bem pessoal sou novo aqui me indicaram o forum e estou gostando, e tenho uma duvida
Estou tentando fazer um controle de acesso com JSF+spring+hibernate
e fiz a implementação do código já e na hora que vou mostra a pagina grupoForm.jsf que é a pagina aonde poso cadastrar grupos e definir o que ele tem acesso da o seguinte erro

javax.servlet.ServletException
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:606)
	org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	july.proj.filters.LoginUsuarioFilter.doFilter(LoginUsuarioFilter.java:43)
	july.proj.filters.LoginFilter.doFilter(LoginFilter.java:43)
	org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
root cause

java.lang.NullPointerException
	july.proj.service.impl.AbstractService.findAll(AbstractService.java:36)
	july.proj.controllers.GrupoFormController.getAcoes(GrupoFormController.java:44)
	sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	java.lang.reflect.Method.invoke(Unknown Source)
	javax.el.BeanELResolver.getValue(BeanELResolver.java:83)
	com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
	com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
	org.apache.el.parser.AstValue.getValue(AstValue.java:123)
	org.apache.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:186)
	com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
	javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
	javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
	com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:202)
	com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
	com.sun.faces.renderkit.html_basic.SelectManyCheckboxListRenderer.encodeEnd(SelectManyCheckboxListRenderer.java:133)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	org.primefaces.component.tabview.TabViewRenderer.encodeTabContent(TabViewRenderer.java:279)
	org.primefaces.component.tabview.TabViewRenderer.encodeContents(TabViewRenderer.java:237)
	org.primefaces.component.tabview.TabViewRenderer.encodeMarkup(TabViewRenderer.java:128)
	org.primefaces.component.tabview.TabViewRenderer.encodeEnd(TabViewRenderer.java:69)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
	javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:845)
	org.primefaces.renderkit.CoreRenderer.renderChild(CoreRenderer.java:57)
	org.primefaces.renderkit.CoreRenderer.renderChildren(CoreRenderer.java:45)
	org.primefaces.component.layout.LayoutUnitRenderer.encodeEnd(LayoutUnitRenderer.java:51)
	javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:875)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1764)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	javax.faces.component.UIComponent.encodeAll(UIComponent.java:1760)
	com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:401)
	com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	javax.faces.webapp.FacesServlet.service(FacesServlet.java:594)
	org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:79)
	july.proj.filters.LoginUsuarioFilter.doFilter(LoginUsuarioFilter.java:43)
	july.proj.filters.LoginFilter.doFilter(LoginFilter.java:43)
	org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)
	org.springframework.orm.hibernate3.support.OpenSessionInViewFilter.doFilterInternal(OpenSessionInViewFilter.java:198)
	org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76)

No caso esta dando ero porque esta retornando um conjunto nulo, mas não sei porque já que o mesmo metodo é chamado por outras requisições e funciona certinho

Abaixo alguns dos códigos...

GrupoFormController

@ViewScoped
@ManagedBean(name="grupoFormController")
public class GrupoFormController extends AbstractFormController<Grupo, GrupoDao>{
	private RecursoService recursoService = ServiceFactory.getRecursoService();
	
	private List<SelectItem> acoes;
	
	
	public List<Acao> getAcoesDoGrupo() {
		List<Acao> acoesDoGrupo = new LinkedList<Acao>();
		acoesDoGrupo.addAll(getGrupo().getAcoes());
		return acoesDoGrupo;
	}
	
	public void setAcoesDoGrupo(List<Acao> acoes) {
		getGrupo().setAcoes(acoes);
	}
	
	public List<SelectItem> getAcoes() {
		if(acoes==null) {
			acoes = new ArrayList<SelectItem>();
			
			List<Recurso> recursos = recursoService.findAll(); /*Esta linha que da o erro*/
			for (Recurso recurso : recursos) {
				SelectItemGroup g = new SelectItemGroup(recurso.getNome());
				List<SelectItem> itens = new ArrayList<SelectItem>();
				
				for(Acao acao: recurso.getAcoes()) {
					itens.add(new SelectItem(acao, acao.getNome()));
				}
				g.setSelectItems(itens.toArray(new SelectItem[itens.size()]));
				acoes.add(g);
			}
			
		}
		return acoes;
	}
	

	
	@PostConstruct
	public void iniciar() {
		super.iniciar();
		System.out.println(getGrupo().getAcoes().size());
	}
	
	@Override
	protected Grupo getNewModel() {
		return new Grupo();
	}

	public Grupo getGrupo() {
		return getModel();
	}


	
}

RecursoDaoHibernate

@Repository("recursoDao")
public class RecursoDaoHibernate extends AbstractDaoHibernate<Recurso> implements RecursoDao {
	public RecursoDaoHibernate(){
		super("Recurso");
		
		}
	
}

AbstractDaoHibernate (somente o m´todo que utilizo)

public AbstractDaoHibernate(String modelClassName) {
		super(); 
		this.modelClassName = modelClassName;
	}

public List<MODEL> findAll() {
		//Busca a sessão do Hibernate getSession()
		//Cria um HQL para buscar os usuário
		//E retorna uma lista com o resultado da consulta HQL
		List<MODEL> models = getSession().createQuery("from "+modelClassName+" order by nome").list();
		
		return models;
	}

Desde já agradeço quem puder me ajudar, ou alguém souber algum tutorial para controle de acesso em java hibernate com spring

T+

4 Respostas

Aleksandro

Você já tentou colocar um breakpoint neste ponto abaixo, debugue seu código …

july.proj.service.impl.AbstractService.findAll(AbstractService.java:36)

Vc já testou sua conexão com o BD tá funcionando corretamente ?

J

OPA, valeu pelas dicas, então a conexão com o banco esta ok, esta listando outras coisas e cadastrando também.

Quanto ao breakpoint, no caso ele vai para a AbstractService.FindAll(), o certo era ir para a abstract DAO depois aih que ele da o erro, o mais estranho é que as outras listagens usam este mesmo metodo já que é um metodo abstrato usado por varios processos.
O que estou tentando listar, são varios checkbox do que ja cadastrei em outra tela aonde tem o recurso(pagina acessada) e a ação(o que pode ser feito), sendo que um recurso tem varias ações.

Assim com essas checkboxes sera para marcar o que pode ser usado pelo usuario poderá acessar quais as paginas e tals.

Aleksandro

juliamoron:
OPA, valeu pelas dicas, então a conexão com o banco esta ok, esta listando outras coisas e cadastrando também.

Quanto ao breakpoint, no caso ele vai para a AbstractService.FindAll(), o certo era ir para a abstract DAO depois aih que ele da o erro, o mais estranho é que as outras listagens usam este mesmo metodo já que é um metodo abstrato usado por varios processos.
O que estou tentando listar, são varios checkbox do que ja cadastrei em outra tela aonde tem o recurso(pagina acessada) e a ação(o que pode ser feito), sendo que um recurso tem varias ações.

Assim com essas checkboxes sera para marcar o que pode ser usado pelo usuario poderá acessar quais as paginas e tals.

Mas se tem certeza que é isto que vc quer fazer mesmo ?

private RecursoService recursoService = ServiceFactory.getRecursoService();

talvez seja por isto que ele esta indo para AbstractService.FindAll()

J

É que assim estou pegando este código de um exemplo da faculdade que esta sem spring, mas até agora tudo que fiz que peguei de algum exemplo era sem spring e criei com spring passando pela camada de serviço e estranho que só este do grupo esta dando problema pois a parte de cadastro e listagem de recurso/ação esta correta.

Apesar disso a lisatem de grupos a tela abre normalmente, só que sem nada cadastrado.

Criado 13 de agosto de 2012
Ultima resposta 15 de ago. de 2012
Respostas 4
Participantes 2