| Author |
Message |
|
|
1 Cássio Marques
2 3 anos aproximadamente
3 2 anos aproximadamente
4 Nenhum
5 Praticidade e a facilidade que encontro para integrá-lo com outras ferramentas, o esquema de filtros que me ajuda bastante.
6 IoC, DI
7 O esquema de debug é um pouco "instrusivo".
8 Eu não uso muito as novas features do Mentawai, como o suporte a Ajax, pois já me acostumei a utilizar outras soluções, mas algo que eu senti falta desde o início é que os filtros VO e OV não são capazes de lidar com listas existentes nas classes dos objetos injetados na session.
Outra sugestão seria o seguinte: Como sei que muitos desenvolvedores utilizam o Firefox com o plugin Firebug para desenvolver, o que esquema de debug do mentawai poderia também incluir um modo que mandasse todo aquele output gerado para o console do Firebug ao invés de mandar pro HTML, porque as vezes essas mensagens bagunçam todo o meu layout, principalmente quando carrego um JSP dentro de um div, via Ajax...
|
 |
|
|
Sérgio, resolvi aqui. Na verdade não estou usando nada do mentaweai para trabalhar com o Hibernate.
Uso o Hibernate combinando DAOs genéricos e o padrão open session in view.
Dei uma alterada no meu DAO genérico base e consegui fazer funcionar.
Obrigado!
|
 |
|
|
Olá pessoal,
Estou usando o padrão "open session in view", onde tenho um filtro criado com a API de servlets (chamei de HibernateFilter) que cria uma sessão do hibernate e inicializa a transação quando a requisição chega ao servidor. Depois de tudo executado, o filtro executa o commit na transação e assim controlo o contexto transacional da aplicação.
Criei um outro filtro usando agora a API do Mentawai, que é executado depois que o HibernateFilter é inicializado (mas antes do mesmo ter comitado a transação) e nesse filtro eu altero um registro no banco usando o Hibernate.
Estou recebendo uma excessão dizendo que não há transação ativa quando tendo fazer o acesso ao banco por esse filtro...
Coloquei uns prints nos dois filtros e vi que a coisa está acontecendo na seguinte sequência:
- Entra no HibernateFilter
- Cria a sessão e inicializa a transação
- Executa o filtro
- Entra no filtro que criei com o menta
- Executa o filtro
- Tenta acessar o banco (meu DAO pega a se4ssão anteriormente criada pelo HibernateFilter)
- A aplicação dispara a excessão dizendo que não há transação ativa...
Quer dizer, a execução nem chega a retornar para o HibernateFilter, onde a transação seria efetivamente comitada.
Alguém já passou por isso ou por algo semelhante?
Obrigado!
|
 |
|
|
Olá pessoal,
Venho compartilhar com vocês o término de um grande projeto que venho desenvolvendo utilizando o Mentawai.
A aplicação se chama CSHAGN (Controle para serviço de Hemoterapia) e levou 8 meses para ser concluída. Trata-se de um sistema de integração entre diversas agências transfusionais localizadas em hospitais de várias cidades aqui do Vale do Paraíba e nossa central, onde temos outra parte do sistema (legado) e um banco de dados em postgresql com mais de 10 anos de dados salvos, tudo interligado.
Graças ao Mentawai pude concluir este projeto dentro do prazo, pois acredito que poucos frameworks possuem tal simplicidade. Antes deste projeto eu nunca havia desenvolvido nada para web e foi um grande desafio, no qual o Menta foi realmente uma mão na roda!
Utilizei diversas tecnologias no projeto, o qual faz uso intenso de Ajax através do DWR, Prototype e Scriptaculous. Entretanto, sempre que pude aproveitei a facilidade dos filtros providos pelo Mentawai, além de ter escrito diversas tags para facilitar o desenvolvimento.
Usei IoC, DI, Filters, esquema de autenticação e autorização, dyntags e várias outras coisas do Menta.
Infelizmente não tenho como tornar pública aqui a aplicação, pois a mesma roda em nossa intranet, mas fico feliz em poder compartilhar com todos.
Vida longa ao Menta!
Um abraço a todos!
|
 |
|
|
Olá pessoal,
Venho utilizando o trio DWR + Prototype + Mentawai em 3 projetos no momento. O que posso dizer é que com certeza vale à pena criarmos algum esquema de integração entre os três, mas de maneira definitiva. Na verdade o que quero dizer é que acredito na criação de componentes prontos (mas com o mínimo de liberdade para configuração), plugáveis em uma aplicação web através do Mentawai, mas que têm o DWR e o Prototype por trás.
Alguns poderiam perguntar: Mas porque então não usar qualquer outra coisa ao invés do Mentawai?
O que eu vejo de mais vantajoso no Menta é o esquema de filtros.
Hoje em dia minhas aplicações têm grande parte das funcionalidades (pesquisas, salvar dados no banco, etc) implementadas com Ajax, mas ainda assim utilizo o Menta, interceptando os requests do DWR e fazendo passar pelos filtros antes de executar.
É algo assim que tenho em mente.Não sei se essa "componentização" fugiria muito do propósito do framework, mas acho que não, afinal já temos as dyntags!
Enfim, espero poder colaborar com a idéia e criar algo também. Tenho trabalhado bastante com as tecnologias citadas e acredito poder contribuir.
Abraços!
|
 |
|
|
A situação é exatamente a que você falou Leiber
Vou dar uma olhada com calma neste post e nas stick actions.
Obrigado!
|
 |
|
|
IceW0lf wrote:
Sair do sistema ou da página ?
- Se for do sistema acho q é automático oiu deveria ser pelo menos.
- Se for de página acho que vc pode enviar pra uma Action e nela dar um session.remove("RemoveEstaSession");
Só confirme se é session.remove mesmo... num lembro
Leiber, é sair da página mesmo.
Só não entendi como eu vou enviar para uma action ao sair da página. Na página tenho um menu com opções de outras telas do sistema, não tem como prever onde o usuário vai clicar... Eu teria que interceptar a requisição antes de enviar para a nova página, mas como?
Se eu conseguir interceptar, é fácil fazer
Code:
session.removeAttribute("nome_do_atributo");
Obrigado pela resposta!
|
 |
|
|
Bom dia pessoal,
Tenho uma página a qual durante seu uso vai colocando diversos objetos na sessão do usuário, via ajax. O que eu queria é que quando o usuário deixasse essa página, os objetos fossem automaticametne retirados da sessão. Tem como?
Abraço!
|
 |
|
|
Opa, beleza?
Cara, se eu entendi direito sua dúvida, o que acontece é mais ou menos isso mesmo que voce falou.
aqui, tudo o que você fizer vai sim ser retornado pelo DWR, pois ele é quem está controlando o inicío e fim do seu http request. O menta está bem "no meio" do processo. Você faz uma chamada para uma action usando o DWR (início do processo), quando isso chega no servidor quem cuida é o menta. Após processar tudo (aproveitando todos os recursos do menta, como IoC, DI, e qualquer outro filtro que você tenha colocado), é feito o retorno usando a consequência configurada no seu ApplicationManager, normalmente. Só que como o http request saiu do DWR, quando o Menta devolve o resultado (o forward para um jsp, no nosso exemplo), isso vai como um stream de caracteres de volta para o DWR e chega no seu javascript como uma string, recebida como argumento da função de callback, que é quem efetivamente renderiza tudo isso como html normal dentro de um <div>
Espero ter conseguido explicar para você, qualquer dúvida posta ai!
|
 |
|
|
saoj wrote:
Complicado isso. Será que requisição via javascript não está passando o cookie da session?
Não tenho idéia não. Dá uma pesquisada aí e depois posta a solução aqui...
Achei uma solução! Não usei nada do menta para resolver, mas sim do DWR, mas fica aqui a solução como curiosidade...
Como o Sérgio falou, realmente a requisição javascript está passando o jsessionid, mas isso fica no corpo do POST, não tenho acesso direto a isso na minha classe de negócio, pois não tenho acesso ao request http de lá, fica tudo encapsulado dentro do DWR. Porém o DWR possui um método com o qual consigo recuperar a sessão.... A coisa toda fica um pouco atrelada ao DWR, mas é a solução que me atendeu melhor até agora...
No método que chamo através do DWR ficou mais ou menos assim:
Code:
public boolean meuMetodo(String param1, String param2) throws Exception {
String atributoDaSessao = WebContextFactory.get().getSession().getAttribute("nomeatributo");
//mais codigo aqui...
}
Ficou meio feio, tenho que ir buscar o atributo lá na casa do chapéu, mas por enquanto vai ter que servir. Se depois eu descobrir uma solução mais elegante posto aqui também...
Abraço e obrigado pela ajuda!
|
 |
|
|
saoj wrote:
Calma.
Sua requisição AJAX tem que passar por uma Action, que pegará o atributo da session e passará para o modelo de negócios.
O que acontece é que estou fazendo essa requisição via ajax, logo a mesma não passa por uma action.
Não entendi isso visto que uma requisição Ajax pode e deve passar por uma action.
Não se for com o DWR Não quero retornar a consequencia da action e ser redirecionado, quero apenas gravar um registro no banco e receber de volta, no javascript, um boolean
Faço isso sempre, mas desta vez preciso de um parâmetro que está setado na sessão do usuário.
Tentei utilizar o código de uma action correlata à essa minha classe de negócio, criando um nela um método que não é uma inner action mas sim somente uma interface para recuperar a session e chamar o método que realmente me interessa na classe de negócio, mas quando faço isso a sessão é null...
|
 |
|
|
IceW0lf wrote:
Acho que teria que extender BaseLoginAction nao ?
A partir da classe de negócio? Se for isso prefiro achar outra solução, pois assim eu iria misturar demais os concerns, acho que quebraria o MVC, sem contar que a classe de negócio herdaria trocentos métodos que seriam inúteis e iriam expor coisas demais...
Obrigado pela resposta!
|
 |
|
|
Pessoal, não sei se minha pergunta é besta e existe uma maneira trivial de se fazer isso, mas não estou conseguindo recuperar um atributo setado na sessão do usuário de dentro de uma classe de negócio. O que acontece é que estou fazendo essa requisição via ajax, logo a mesma não passa por uma action.
Obrigado!
|
 |
|
|
Que bom que funcionou
Cara, a documentação existente é a dos exemplos do site mesmo... Você pode baixar a API doi Mentawai também para dar uma olhada na implementação das tags, ajuda bastante.
|
 |
|
|
Você pode fazer algo do tipo:
Code:
<mtw:list value="sualista">
<mtw:isEmpty>
Lista vazia!
</mtw:isEmpty>
<mtw:isEmpty negate="true">
<%-- exibe o que vc quiser aqui --%>
</mtw:isEmpty>
</mtw:list>
|
 |
|
|
|
|