Estou lendo a apostila do curso FJ28 da Caelum, e não consegui realizar o Execício 11.6 do Item 12.
Se alguém poder me ajudar a solucionar este erro, segue abaixo as infomação que acho necessário para que os interessados possam me ajudar.
Classe ProdutoController:
[code]package br.com.caelum.goodbuy.controller;
import java.util.List;
import br.com.caelum.goodbuy.dao.ProdutoDAO;
import br.com.caelum.goodbuy.modelo.Produto;
import br.com.caelum.vraptor.Delete;
import br.com.caelum.vraptor.Get;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Put;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.caelum.vraptor.Validator;
import br.com.caelum.vraptor.View;
import br.com.caelum.vraptor.validator.ValidationMessage;
@Resource
public class ProdutosController {
private ProdutoDAO dao;
private Result result;
private Validator validator;
public ProdutosController(ProdutoDAO dao, Result result, Validator validator) {
this.dao = dao;
this.result = result;
this.validator = validator;
}
@Get
@Path("/produtos/novo")
public void formulario() {
}
@Get
@Path("/produtos/busca")
public List<Produto> busca(String nome) {
result.include("nome", nome);
return dao.busca(nome);
}
[b]@Get
@Path("/produtos/busca.json")
public void buscaJson(String q) {
result.use(json()).withoutRoot()
.from(dao.busca(q))
.exclude("id", "descricao")
.serialize();
}[/b][/code]
************************************************************
Arquivo header.jspf (onde é chamado o método “buscaJson”)
[code]<%@taglib uri=“http://java.sun.com/jsp/jstl/core” prefix=“c”%>
<%@taglib uri=“http://java.sun.com/jsp/jstl/fmt” prefix=“fmt”%>
</div>
<div id="erros">
<ul>
<c:forEach items="${errors}" var="error">
<li>${error.category } - ${error.message }</li>
</c:forEach>
</ul>
</div>
<div id="body">
<div id="menu">
<ul>
<li><a href="<c:url value="/produtos/novo" />">Novo Produto</a></li>
<li><a href="<c:url value="/produtos"/>">Lista Produtos</a></li>
[b]<li>
<form action="<c:url value="/produtos/busca" />">
<input id="busca" name="nome" />
</form>
<script type="text/javascript">
$("#busca").puts("Busca produtos por nome");
$("#busca").autocomplete('/goodbuy/produtos/busca.json', {
dataType: "json",
parse: function(produtos) {
return $.map(produtos, function(produto) {
return {
data: produto,
value: produto.nome,
result: produto.nome
};
});
},
formatItem: function(produto) {
return produto.nome + "(" + produto.preco +")";
}
});
</script>
</li>[/b]
</ul>
</div>
<div id="content">[/code]
************************************************************
Mensagem de Erro:
[code]GRAVE: Servlet.service() for servlet default threw exception
br.com.caelum.vraptor.InterceptionException: exception raised, check root cause for details: java.lang.Error: Unresolved compilation problem:
The method json() is undefined for the type ProdutosController
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:96)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:61)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ExceptionHandlerInterceptor.intercept(ExceptionHandlerInterceptor.java:71)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.FlashInterceptor.intercept(FlashInterceptor.java:83)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.InstantiateInterceptor.intercept(InstantiateInterceptor.java:48)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ParametersInstantiatorInterceptor.intercept(ParametersInstantiatorInterceptor.java:89)
at br.com.caelum.vraptor.core.LazyInterceptorHandler.execute(LazyInterceptorHandler.java:59)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.interceptor.ResourceLookupInterceptor.intercept(ResourceLookupInterceptor.java:69)
at br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
at br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:54)
at br.com.caelum.vraptor.core.EnhancedRequestExecution.execute(EnhancedRequestExecution.java:23)
at br.com.caelum.vraptor.VRaptor$1.insideRequest(VRaptor.java:92)
at br.com.caelum.vraptor.ioc.spring.SpringProvider.provideForRequest(SpringProvider.java:58)
at br.com.caelum.vraptor.VRaptor.doFilter(VRaptor.java:89)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
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)
Caused by: java.lang.Error: Unresolved compilation problem:
The method json() is undefined for the type ProdutosController
at br.com.caelum.goodbuy.controller.ProdutosController.buscaJson(ProdutosController.java:45)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at br.com.caelum.vraptor.interceptor.ExecuteMethodInterceptor.intercept(ExecuteMethodInterceptor.java:61)
... 35 more
Desde já agradeço a atenção da comunidade![/code]
Abraço!