Erro em método usando new MyController...
30/01/2013 02:35
0
Oi pessoal,

Estou utilizando a seguinte linha de código para exibir resultados do método buscaDoc()

<g:each var="doc" in="${buscaDoc()}">
<div class="name">
<g:link controller="documento" action="show" id="${doc.id}"> ${doc.tipo}
</g:link>
</div>
<div class="displayLink">${doc.path}
<g:link controller="documento" action="readFromFile" params="[p:doc.path]"
target="_blank">Arquivo</g:link>
</div>
<div class="desc">${new gerdoc.DocumentoController().reduzTexto(doc.texto)} - ${doc.data} </div>
&nbsp;

<g:set var="qtd" value="${qtd + 1}"/>
</g:each>


Quando são poucos resultados ele exibe normalmente porém quando são muito ele retorna o seguinte erro:

ERROR view.GroovyPageView - Error processing GroovyPageView: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:46)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp.run(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:84)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at gerdoc.DocumentoController$_closure4.doCall(DocumentoController.groovy:56)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19_closure33.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
... 5 more
2013-01-29 21:40:26,369 [http-8080-3] ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /Gerdoc/documento/busca - parameters:
textoAux: []
q: paulo
Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:46)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp.run(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:84)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at gerdoc.DocumentoController$_closure4.doCall(DocumentoController.groovy:56)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19_closure33.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
... 5 more
2013-01-29 21:40:26,719 [http-8080-3] ERROR [Tomcat].[localhost] - Exception Processing ErrorPage[errorCode=500, location=/grails-errorhandler]
java.lang.IllegalStateException: Cannot reset buffer after response has been committed
at org.apache.catalina.connector.Response.resetBuffer(Response.java:691)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:409)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:343)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:287)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:680)
2013-01-29 21:49:11,939 [http-8080-2] ERROR view.GroovyPageView - Error processing GroovyPageView: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:46)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp.run(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:84)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at gerdoc.DocumentoController$_closure4.doCall(DocumentoController.groovy:56)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19_closure33.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
... 5 more
2013-01-29 21:49:11,997 [http-8080-2] ERROR errors.GrailsExceptionResolver - Exception occurred when processing request: [GET] /Gerdoc/documento/busca - parameters:
textoAux: []
q: jose
Stacktrace follows:
org.codehaus.groovy.grails.web.pages.exceptions.GroovyPagesException: Error evaluating expression [new gerdoc.DocumentoController().reduzTexto(doc.texto)] on line [134]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:46)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp.run(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:84)
at java.lang.Thread.run(Thread.java:680)
Caused by: org.codehaus.groovy.runtime.InvokerInvocationException: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
... 5 more
Caused by: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: []
Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.IntRange), getAt(java.util.Collection), getAt(int)
at gerdoc.DocumentoController$_closure4.doCall(DocumentoController.groovy:56)
at Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp$_run_closure2_closure19_closure33.doCall(Users_fabianoferreiraluz_aplicativosJava_Gerdoc_grails_app_views_documento_busca_gsp:59)
... 5 more
2013-01-29 21:49:12,070 [http-8080-2] ERROR [Tomcat].[localhost] - Exception Processing ErrorPage[errorCode=500, location=/grails-errorhandler]
java.lang.IllegalStateException: Cannot reset buffer after response has been committed
at org.apache.catalina.connector.Response.resetBuffer(Response.java:691)
at org.apache.catalina.core.StandardHostValve.custom(StandardHostValve.java:409)
at org.apache.catalina.core.StandardHostValve.status(StandardHostValve.java:343)
at org.apache.catalina.core.StandardHostValve.throwable(StandardHostValve.java:287)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:142)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:849)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:583)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:454)
at java.lang.Thread.run(Thread.java:680)


Eu acho que o problema está no metodo: "new gerdoc.DocumentoController().reduzTexto(doc.texto)" mas ainda não descobri como solucionar.
Tags: erro usando new controller


0
Fabiano,

já que faz um loop, talvez seja melhor não ficar instanciando o DocumentoController em toda iteração.

Antes do <g:each... faça assim:
<g:set var="doccontroller" value="${new gerdoc.DocumentoController()}" />

Dai, troque
${new gerdoc.DocumentoController().reduzTexto(doc.texto)}

por
${doccontroller.reduzTexto(doc.texto)}


Se ainda assim o erro persistir, é algum problema no seu método no controller.


0
A ideia a principio achei superlegal Yoshiriro porém ainda não alivia o erro:


Error 500: Error evaluating expression [doccontroller.reduzTexto(doc.texto)] on line [144]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: [] Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.Range), getAt(java.lang.String), getAt(groovy.lang.EmptyRange)
Servlet: grails
URI: /Gerdoc/grails/documento/busca.dispatch
Exception Message: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: [] Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.Range), getAt(java.lang.String), getAt(groovy.lang.EmptyRange)
Caused by: Error evaluating expression [doccontroller.reduzTexto(doc.texto)] on line [144]: groovy.lang.MissingMethodException: No signature of method: java.lang.String.lenght() is applicable for argument types: () values: [] Possible solutions: length(), next(), concat(java.lang.String), getAt(groovy.lang.Range), getAt(java.lang.String), getAt(groovy.lang.EmptyRange)
Class: DocumentoController
At Line: [144]
Code Snippet:


Nossa esse problema de reduzir o texto da consulta durante a exibição ta virando uma novela Yoshi, por acaso vc teria uma sugestão mais simples e fácil para mim?

Att
30/01/2013 17:26


0
Na verdade sugestão seria esse método não estar no controlador e sim numa classe utilitária. Não que isso resolva o bug que está dando, mas ficaria mais elegante.

Quanto ao erro pra mim está claro que é no método reduzTexto(). Tem alguma situação nele que faz dar erro o que lá chega via GSP.

Ora, a mensagem de erro é clara: em algum momento você usar o "lenght()" em uma String porémao invés de passar um número pra ele passa uma lista.

Pode mandar o código completo desse método?


0
Legal Yoshiriro, mais uma dentro!

Foi ótima esta dica percebi que o erro está dentro do método reduz texto.


def reduzTexto = {s ->

String texto = s

String busca = params.q

busca = busca.toLowerCase()

def tamanhoBusca = busca.length()

def localIndice = texto.toLowerCase().indexOf(busca)

int Indiceaux = 0

int letrasDepois = 0

if (localIndice > 50){
Indiceaux = localIndice - 50
}else
if (localIndice > 20){
Indiceaux = localIndice - 20
}
else
Indiceaux = 0

if ((texto.length() - localIndice)>300)
letrasDepois = 300
else
letrasDepois = texto.lenght()

String resultado = texto.substring(Indiceaux,(localIndice+tamanhoBusca+letrasDepois)) Indiceaux = resultado.indexOf(" ")

resultado = resultado.substring(Indiceaux,resultado.length())

resultado.replaceAll("(?i)"+busca, "<b>"+busca+"</b>")
}



O objetivo deste método é o seguinte: eu tenho um texto e tenho uma palavra ou termo procurado, preciso exibir exatamente a parte do texto que a palavra está sendo mencionada...(semelhante ao google). então e pego um pouquinho antes da palavra procurada até 300 caracteres a frente. Mas está dando erros... me ajudem a analisar.

No final tb tem uma implementação que não funciona como eu gostaria.

resultado.replaceAll("(?i)"+busca, "<b>"+busca+"</b>")


esse trecho do código seria para inserir a tag de negrito na palavra que estou procurando. embora ele reconhece a palavra em qualquer caixa (upper ou lower). o replace é com a palavra procurada. Ou seja se no texto original estiver em maiúsculas mas se eu digitei na caixa de procura em minuscula o replace é feito em minuscula.
31/01/2013 01:19


1
Fabiano,

Desconfio que o teu
params.q // (na linha "String busca = params.q") [code] 
não retorna nada, afinal você não usou o controlador como um controlador e sim como uma classe qualquer da qual quer usar um método.

Sugiro passar esse "q" lá na tag GSP e transformá-lo em parâmetro no teu método "reduzTexto()". Ou seja, ficaria assim:
[code]${doccontroller.reduzTexto(doc.texto, params.q)}

E no método ficaria assim
[code]def reduzTexto = {s,b ->
...
String busca = b [code]

Na boa, pode ser até isso o problema.


0
Legal mesmo Yoshiriro,

são pessoas como você que aumenta a qualidade desta comunidade.

Abraços e muito obrigado pela atenção!

;)
31/01/2013 13:49



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto