[quote=Lucas Cavalcanti]Veja se você está usando as convenções direitinho:
a o método:
@Resource
public class ClienteController {
public void lista() {...}
}
[/quote]
Oi Lucas, tudo blz?!
Comecei a estudar o vRaptor e o Tut da Caelum!
Antes de entrar no Validations, fiquei tão ansioso (e entusiasmado 8) ) com o Frame, q eu decidi logo comentOut as Annotations na Entidade Produto e “improvisar” +/- 1 mock na DAO p/ ver a página lista.jsp funcionando.
Além disso, tive q adicionar o import da .TLD Core da JSTL. Porém, agora apresenta o seguinte erro: “
br.com.caelum.vraptor.view.ResultException: javax.servlet.ServletException: javax/el/ValueExpression
br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:69)
br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
br.com.caelum.vraptor.core.DefaultInterceptorStack.next(DefaultInterceptorStack.java:65)
…”
Ah, no Tutorial está deste jeito:
public List<Produto> lista() {
return dao.listaTodos();
}
Afinal, Qual é a maneira (convenção) correta??! :roll:
Thnx in advance,
se está dando javax/el/ValueExpression é pq vc está (ou não) com o standard.jar ou jstl.jar no WEB-INF/lib… talvez vc tenha que colocar (ou tirar) esses jars
qto à convenção, você usa o retorno se quiser que o VRaptor jogue o retorno pra view automaticamente… nesse caso o nome do atributo jogado seria produtoList.
(Obs.: na pág. ‘form.jsp’ eu adicionei o import jstl/core e a tag <c:url (colocada no atrubuto action=’’’) passou a funcionar adequadamente. Então, desta forma, achei q não iria ter problemas com a c:forEach em ‘lista.jsp’ :shock: )
Mas, realmente na aplicação/projeto disponibilizada estava faltando o ‘standard.jar’. Adicionei-o; acabei tendo alguns problemas de ‘deferredExpression’ e acabei adicionando tb o ‘jstl.jar’ (da mesma versão do meu standard.jar) no lugar dos 2: ‘jstl-api-1.2.jar’ e ‘jstl-impl-1.2.jar’ (q creio ser útil para v6 q estão desenvolvendo o FrameWork) tendo em vista q tive q alterar a especificação da Aplicação de JavaWeb 2.5 para 2.4, pois só posso usar TomCat 5.5 => Valews mesmo pela dica!!
Ah, tenho + 1 dúvida. Poderia trocar toda a Convenção ‘form’ por, por exemplo, ‘manter’??! (Ou ‘form’ é 1 “convenção interna” do vRaptor??)
grato,
vc diz o nome do método? Você pode usar o nome que quiser… se mas se vc tiver o método ProdutoController.manter() ele vai responder à URI /produto/manter
e vai pra jsp /WEB-INF/jsp/produto/manter.jsp
[/code]e o Console apresenta: "
.
.
14:58:50,360 DEBUG [JstlLocalization ] couldn’t find message bundle, creating an empty one
…
14:58:50,376 DEBUG [DefaultStaticContentHandler] Deferring request to container: /OnLineStore/WEB-INF/jsp/produtos/form.jsp
14:58:50,376 DEBUG [VRaptor ] VRaptor ended the request
"
Por gentileza, me confirme: seria 1 mito o q dizem q quando usar o estilo clássico não precisar adicionar 1 arquivo messages.properties??! :roll:
Ah, e em outro tópico vc falou
Eu não pude encontrar! Em todo caso, onde tem disponível para DownLoad??!
E só + 1 duvidinha: no vRaptor existe alguma forma de fazer Valicação de forma centralizada (bem ao estilo do Seam), ou seja, em 1 só local definir a Validação para q seja gerada tanto Server-side como Client-side??! :mrgreen:
[quote=derlon]
E só + 1 duvidinha: no vRaptor existe alguma forma de fazer Valicação de forma centralizada (bem ao estilo do Seam), ou seja, em 1 só local definir a Validação para q seja gerada tanto Server-side como Client-side??! :mrgreen:[/quote]
não tem nada pronto nesse sentido ainda…
Então apenas me confirme: seu eu usar o HamCrest, sou “obrigado” a adicionar o messages.properties no meu default src??!
Bem, continuando a minha saga do tutorial do vRaptor3: estou tentando fazer a Validação Estilo Fluente, porém adicionando no messages o seguinte:
greater_than = maior que
required_field = {0} é um Campo Obrigatório
Form Produtos
produto.nome=Nome
produto.preco=Preço
No método da Controller a seguinte validação:
validator.checking(new Validations() {{
that(!(produto.getNome().isEmpty() ), "Preenchimento Obrigatório", "required_field", "produto.nome");
that(produto.getPreco() > 0, "produto.preco", "greater_than", "Valor Inválido");
}});
acabo obtendo na Página as Mensagens da seguinte forma:
* Preenchimento Obrigatório produto.nome é um Campo Obrigatório
* produto.preco maior que
Ou seja, como faço para passar o Nome do Campo como parâmetro para a ‘Msg de Campo de Preenchimento Obrigatório’ de forma adequada??
[quote=Lucas Cavalcanti]
[quote=derlon]
E só + 1 duvidinha: no vRaptor existe alguma forma de fazer Valicação de forma centralizada (bem ao estilo do Seam), ou seja, em 1 só local definir a Validação para q seja gerada tanto Server-side como Client-side??! :mrgreen:[/quote]
não tem nada pronto nesse sentido ainda…[/quote]
E neste caso você saberia dizer se eu poderia usar/adotar o plugIn Validator da Lib Commons (da Apache; assim como fazemos no Struts1.x)??
[quote=derlon]
E neste caso você saberia dizer se eu poderia usar/adorar o plugIn Validator da Lib Commons (da Apache; assim como fazemos no Struts1.x)??[/quote]
Nunca tentei fazer isso… mas teoricamente vc pode usar esse plugin sim…
validator.checking(new Validations() {{
that(!(produto.getNome().isEmpty() ), "produto.nome", "required_field", "Nome");
...
[/quote]
Vc sugeriu passar a String [color=blue]“Nome”[/color] no 4° parâmetro: isso não violaria o princípio da Internacionalização??
Bem, relembrando q estou seguindo o exemplo do tutorial, a JSP está assim:
<li>${error.category} ${error.message}</li>
Considerando passar uma [color=red]String vazia[/color] no 2° parâmetro (o da Categoria de Erro) e tb no .properties fiz as seguintes alterações:
greater_than = {0} maior que {1}!
produto_nome=Nome
acabo obtendo a seguinte (validação gerada):
* produto_nome é um Campo Obrigatório
* produto.preco maior que 0!
Ou seja, “o vRaptor” não está substituindo as chaves de Nome de Campo pelo seus respectivos Valores do arquivo de messages (lançando a String a propria chave (passada no Parâmetro))! :oops: Será q estou fazendo algo errado??!
Estou começando a estudar o Vraptor e estou tendo um problema similar ao do Derlon.
Estou também tendo este erro:
"
br.com.caelum.vraptor.view.ResultException: javax.servlet.ServletException: javax/el/ValueExpression
br.com.caelum.vraptor.view.DefaultPageResult.forward(DefaultPageResult.java:69)
br.com.caelum.vraptor.extra.ForwardToDefaultViewInterceptor.intercept(ForwardToDefaultViewInterceptor.java:59)
br.com.caelum.vraptor.core.ToInstantiateInterceptorHandler.execute(ToInstantiateInterceptorHandler.java:54)
“
Tenti realizar as modificações sugeridas por voces no forum.
EU substitui o ‘jstl-api-1.2.jar’ e ‘jstl-impl-1.2.jar’ pelos ‘jstl.jar’ e ‘standard.jar’, Com isso, a exceção assim deixou de acontecer, entretanto, em vez de aparecer os valores do meu objeto produto apareceu a seguinte linha no meu navegador:
”
${produto.nome} - ${produto.descricao}
"
Voces saberia me ajudar a esclarecer este meu problema ?
Minha segunda duvida é com relação ao stack trace. atualmente os error que ocorrem apenas estão aparecendo no navegador e não no console do meu eclipse, saberia dizer o q preciso modificar para fazer todos os error aparecerem no console do eclipse ?
Muito obrigado pela atenção, abaixo estarei colocando meu codigo jsp e meu Controler.
Com relação ao servido estou usando o tomcat 5.5, a saída do console mostrou a parto do carregamento do sistema, e outras coisas, entretanto, quando o erro ocorreu ele só apareceu no navegado e não no consolo
Muito obrigado p/ ajuda, dicas e conselhos!! :thumbup:
Só postei p/ avisar q estou 20 dias de férias, mas logo volto p/ continuar a saga!! 8)
Mas, meus parabens p/ vc, o Silveira, todo o pessoal do vRaptor… A idéia do FrameWork é fenomenal, o vRaptor está cada dia melhor, continuem o ótimo trabalho !! :XD:
Substituí o vraptor-3.1.1.jar pelo o (nightly build) q vc me indicou e funfou 100%!! 8) Grato p/ melhoria!!
Apenas 1 observação: para q o Valor da Categoria (de Erro) seja mostrado na .JSP (em vez da Chave), seu parametro tb precisa ser passado c/ a função i18n(“categoria_internacionalizada”), por exemplo, desta forma:
that(!(produto.getDescricao().isEmpty() ), i18n("mandatory.field"), "required_field", i18n("produto_descricao"));
Obtendo:
* Preenchimento Obrigatório: Descrição é um Campo Obrigatório.
Agora, estou tentando internacionalizar os Campos assim:
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<fmt:message key="produto_nome"/><br />
, porém tudo q consigo é a Key (chave) entre interrogações (deste jeito):
???produto_nome???
Só q agora percebe-se q somente os Nomes dos Campos são internacionalizados. Mas, as mensagens das Validações são exibidas os Valores, porém sem internacionalizar (na verdade isto já estava acontecendo, tanto no EI, como no FireFox).
Não, não tem nenhuma imagem no meu projeto (q é apenas o Blank, fornecido p/ site do vRaptor (apenas renomeei o Nome do Projeto p/ ‘vRaptor-OnLine-i18n-project’), adicionados apenas recursos de validação e i18n).
E sim, só acontece no IE. Bem, nunca testei em outros browsers, mas no FF tudo sempre funciona ok!! No entanto, no EI a única pág. q carrega de cara é quando eu starto a Aplicação e ela chama a pág. index.jsp! :shock: