Problemas com EL e JavaScript

10 respostas
worldsoft

Tenho o seguinte trexo de código escrito em javascript:

for(var i=pageIndex*itemsPerPage;i<maxElem;i++){						
	       var text = '${costCenterList[i].description}';							
        newContent += '<dt>'+text+></dt>';         	       
 }

O problema é que a variavél text não recebe valor algum, mais se eu fizer:

var text = '${costCenterList[0].description}'

ou

var text = '${costCenterList[1].description}'

ou

var text = '${costCenterList[2].description}'

A variavél text recebe o valor que está na lista, alguém sabe me dizer o por que isso acontece?

10 Respostas

drsmachado

Pois no primeiro contexto a iteração sobre i é externa ao código.
É como tentar isso:

for(int u = 0; u < 100; u++){
  String a = "a " + "u"; 
}

Não vai adiantar nada.

worldsoft

drsmachado:
Pois no primeiro contexto a iteração sobre i é externa ao código.
É como tentar isso:

for(int u = 0; u < 100; u++){
  String a = "a " + "u"; 
}

Não vai adiantar nada.

Eu entendi, e já imaginava isso, mais como faço para percorrer minha lista, pois tentei desta forma

for(var i=pageIndex*itemsPerPage;i<maxElem;i++){                       
       var text = '${costCenterList}';                             
       newContent += '<dt>'+text[i].description+></dt>';                     
}

E nada também.

drsmachado

O problema está na iteração dentro do el…
Nunca tentei fazer isto, mas, quem sabe, dê certo

for(var i=pageIndex*itemsPerPage;i<maxElem;i++){                       
           var text = '${costCenterList["' + i + '"].description}';                             
           newContent += '<dt>'+text+></dt>';                     
    }
worldsoft

drsmachado:
O problema está na iteração dentro do el…
Nunca tentei fazer isto, mas, quem sabe, dê certo

for(var i=pageIndex*itemsPerPage;i<maxElem;i++){ var text = '${costCenterList["' + i + '"].description}'; newContent += '<dt>'+text+></dt>'; }

Não da não, olha a stak trace:

br.com.caelum.vraptor.view.ResultException: org.apache.jasper.JasperException: /WEB-INF/jsp/costCenter/list.jsp(12,20) The attribute prefix functions does not correspond to any imported tag library
	br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:69)
	br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:67)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.tsoftnet.atlas.Filter.Paginator.intercept(Paginator.java:20)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

root cause

org.apache.jasper.JasperException: /WEB-INF/jsp/costCenter/list.jsp(12,20) The attribute prefix functions does not correspond to any imported tag library
	org.apache.jasper.compiler.DefaultErrorHandler.jspError(DefaultErrorHandler.java:41)
	org.apache.jasper.compiler.ErrorDispatcher.dispatch(ErrorDispatcher.java:407)
	org.apache.jasper.compiler.ErrorDispatcher.jspError(ErrorDispatcher.java:148)
	org.apache.jasper.compiler.Validator$ValidateVisitor$1FVVisitor.visit(Validator.java:1535)
	org.apache.jasper.compiler.ELNode$Function.accept(ELNode.java:137)
	org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:208)
	org.apache.jasper.compiler.ELNode$Visitor.visit(ELNode.java:250)
	org.apache.jasper.compiler.ELNode$Root.accept(ELNode.java:61)
	org.apache.jasper.compiler.ELNode$Nodes.visit(ELNode.java:208)
	org.apache.jasper.compiler.Validator$ValidateVisitor.validateFunctions(Validator.java:1554)
	org.apache.jasper.compiler.Validator$ValidateVisitor.prepareExpression(Validator.java:1559)
	org.apache.jasper.compiler.Validator$ValidateVisitor.visit(Validator.java:742)
	org.apache.jasper.compiler.Node$ELExpression.accept(Node.java:954)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	org.apache.jasper.compiler.Node$Visitor.visitBody(Node.java:2428)
	org.apache.jasper.compiler.Node$Visitor.visit(Node.java:2434)
	org.apache.jasper.compiler.Node$Root.accept(Node.java:475)
	org.apache.jasper.compiler.Node$Nodes.visit(Node.java:2376)
	org.apache.jasper.compiler.Validator.validateExDirectives(Validator.java:1789)
	org.apache.jasper.compiler.Compiler.generateJava(Compiler.java:216)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:372)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:352)
	org.apache.jasper.compiler.Compiler.compile(Compiler.java:339)
	org.apache.jasper.JspCompilationContext.compile(JspCompilationContext.java:594)
	org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:344)
	org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:391)
	org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
	javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
	br.com.caelum.vraptor.core.DefaultStaticContentHandler.deferProcessingToContainer(DefaultStaticContentHandler.java:64)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:80)
	br.com.caelum.vraptor.view.DefaultPageResult.defaultView(DefaultPageResult.java:67)
	br.com.caelum.vraptor.interceptor.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:60)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.OutjectResult.intercept(OutjectResult.java:67)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:85)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.tsoftnet.atlas.Filter.Paginator.intercept(Paginator.java:20)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:56)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
	br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
	br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
	br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
	br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
	br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
	br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)

note The full stack trace of the root cause is available in the Apache Tomcat/7.0.12 logs.
Apache Tomcat/7.0.12
drsmachado

Então não tenho idéia de como resolver.

worldsoft

Valeu drsmachado, muito obrigado pela força, alguém saberia me dizer como faço para percorrer minha lista utilizando EL?

drsmachado

E um “forEach” não ajuda?

worldsoft

Então o que acontece éh o seguinte, não vou exibir toda a lista de uma vez.
Utilizo um pluguin JQuery para fazer a paginação, e vou exibindo os dados conforme a página que o usuário seleciona, se usar o forEach, vou ter que ficar verificando se já foi exibido a quantidade de dados correta para a pagina selecionada e além disso, como faria para exibir os dados começando do Objeto 5 por exemplo.

Segue todo o script da paginação:

<script type="text/javascript">
	function pageSelectCallBack(page_index, jq){
	    var items_per_page = $('#sizeList').val();
	    var length = ${functions:length(costCenterList)};
		var max_elem = Math.min((page_index+1) * items_per_page, length);
		//var items = ${costCenterList};
		var newContent = '';
		
		for(var i=page_index*items_per_page;i<max_elem;i++){						
			var text = '${costCenterList[i].description}';						
			alert('${costCenterList["'+i+'"].description}');
	        newContent += '<dt>${costCenterList[0].description}</dt>';         	       
     	}		
		 
     	$('#Searchresult').html(newContent);
	     
    	 return false;				
	}
	
	function getOptionsFromForm(){
    	var opt = {callback: pageSelectCallBack};    	
	    
    	opt['prev_text'] = 'Anterior';
	    opt['next_text'] = 'Próximo';
	    
	    var htmlspecialchars ={ "&":"&amp;", "<":"&lt;", ">":"&gt;", '"':"""}
	    $.each(htmlspecialchars, function(k,v){
        	opt.prev_text = opt.prev_text.replace(k,v);
        	opt.next_text = opt.next_text.replace(k,v);
    	})
    	return opt;
	}

	//When document has loaded, initialize pagination and form 
	$(document).ready(function(){			
		// Create pagination element with options from form
    	var optInit = getOptionsFromForm();    	
		var length = ${functions:length(costCenterList)};
    	$("#Pagination").pagination(length, optInit);
    	
		// Event Handler for for button
		$("#setoptions").click(function(){
			var opt = getOptionsFromForm(); 
			var length = ${functions:length(costCenterList)};
			
			// Re-create pagination content with new parameters
        	$("#Pagination").pagination(length, opt);
    	}); 
		
		
	});	
</script>

O script funciona blz, o único problema é apresentar os dados.

Até.

drsmachado

É, não tinha toda essa informação.
Bom, boa sorte aí, mas pela forma como está fazendo, acredito que com javascript vai ser muito complicado…

worldsoft

drsmachado:
É, não tinha toda essa informação.
Bom, boa sorte aí, mas pela forma como está fazendo, acredito que com javascript vai ser muito complicado…

Valeu cara, obrigado pela ajuda, vou ver se consigo algo mais simples para resolver esse problema.

Criado 11 de maio de 2011
Ultima resposta 11 de mai. de 2011
Respostas 10
Participantes 2