Erro apos validacao do login

3 respostas
A

Ola galera, apos validar o usuario, para redirecionar a pagina apropriada, ele volta retorna esse erro no navegador:

An Error Occurred:

String index out of range: 0

E no console ele retorna esse erro:

SEVERE: Error Rendering View[/pages/protected/index.xhtml]
java.lang.StringIndexOutOfBoundsException: String index out of range: 0
	at java.lang.String.charAt(Unknown Source)
	at com.sun.faces.application.view.MultiViewHandler.getResourceURL(MultiViewHandler.java:333)
	at org.primefaces.renderkit.CoreRenderer.getResourceURL(CoreRenderer.java:76)
	at org.primefaces.renderkit.OutcomeTargetRenderer.getTargetURL(OutcomeTargetRenderer.java:91)
	at org.primefaces.component.menu.BaseMenuRenderer.encodeMenuItem(BaseMenuRenderer.java:78)
	at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeMenuContent(TieredMenuRenderer.java:104)
	at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeSubmenu(TieredMenuRenderer.java:166)
	at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeMenuContent(TieredMenuRenderer.java:123)
	at org.primefaces.component.tieredmenu.TieredMenuRenderer.encodeMenu(TieredMenuRenderer.java:77)
	at org.primefaces.component.menubar.MenubarRenderer.encodeMarkup(MenubarRenderer.java:52)
	at org.primefaces.component.menu.BaseMenuRenderer.encodeEnd(BaseMenuRenderer.java:39)
	at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:883)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1659)
	at javax.faces.render.Renderer.encodeChildren(Renderer.java:168)
	at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:853)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1652)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
	at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1655)
	at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:399)
	at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:131)
	at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:121)
	at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
	at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139)
	at javax.faces.webapp.FacesServlet.service(FacesServlet.java:313)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:304)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at com.teste.ems2.filter.LoginCheckFilter.doFilter(LoginCheckFilter.java:69)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:240)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100)
	at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395)
	at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250)
	at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188)
	at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source)

E o codigo do meu LoginCheckFilter

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
		HttpServletRequest req = (HttpServletRequest) request;
		HttpSession session = req.getSession();

		if (session.isNew()) {
			doLogin(request, response, req);
			return;
		}

		Utilisateur user = (Utilisateur) session.getAttribute("user");

		if (user == null && !allowedURIs.contains(req.getRequestURI())) {
			System.out.println(req.getRequestURI());
			doLogin(request, response, req);
			return;
		}

		chain.doFilter(request, response);  // erro  linha 69
	}

O que estou usando:

primefaces 3.5
jsf-api-2.0.4-b09
jsf-impl-2.0.4-b09
hibernate 4.1.10
JPA 2.0

Não estou sabendo o que esta acontecendo pois aparentemente esta tudo certo, alguém tem alguma idéia do problema?!!

Obrigado galera.

3 Respostas

L

Normalmente este erro ocorre por você estar tentando pegar o índice 0 da sua String.

Mas em seu código que postou não há indícios para este tipo de erro.

Te aconselho a debugar sua aplicação ao preencher os campos de login a acionar o submit.

A

Lucas, adicionei o trace e olha o resultado:

11:17:33,826 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - admin@admin 11:17:33,841 TRACE BasicExtractor:72 - Found [1] as column [id17_] 11:17:33,841 TRACE BasicExtractor:72 - Found [admin@admin] as column [login17_] 11:17:33,841 TRACE BasicExtractor:72 - Found [andriel] as column [password17_] 11:17:33,841 TRACE BasicExtractor:67 - Found [null] as column [person5_17_] 11:17:33,841 TRACE EnumType:448 - Returning [ADMIN] as column [roleUser17_]

Então isso quer dizer que consigo encontrar o usuario, logo o submit não esta passando valores vazios.

Abraço.

L

andrielc:
Lucas, adicionei o trace e olha o resultado:

11:17:33,826 TRACE BasicBinder:83 - binding parameter [1] as [VARCHAR] - admin@admin 11:17:33,841 TRACE BasicExtractor:72 - Found [1] as column [id17_] 11:17:33,841 TRACE BasicExtractor:72 - Found [admin@admin] as column [login17_] 11:17:33,841 TRACE BasicExtractor:72 - Found [andriel] as column [password17_] 11:17:33,841 TRACE BasicExtractor:67 - Found [null] as column [person5_17_] 11:17:33,841 TRACE EnumType:448 - Returning [ADMIN] as column [roleUser17_]

Então isso quer dizer que consigo encontrar o usuario, logo o submit não esta passando valores vazios.

Abraço.

Isso mesmo, sua aplicação encontra o usuário.

O problema deve estar em algum método na sua Action ou Controller.

Criado 30 de abril de 2013
Ultima resposta 2 de mai. de 2013
Respostas 3
Participantes 2