| Author |
Message |
|
|
Isso resolve em partes.
Tenho um DAO para cada entidade, todos eles herdam do dao mais genérico. Sendo assim teria que ter um Componente para cada Dao?
|
 |
|
|
Boa tarde a todos!
Utilizo o ioc do menta em meus projetos. Tenho alguns daos genéricos e surgiu a solicitação de usar mais um banco de dados na aplicação. Como solução tenho um parâmetro no construtor do DAO informando o banco.
A questão é! Como passar parâmetros (dinâmicos) para o construtor do meu DAO usando IOC
|
 |
|
|
|
Não existe uma maneira de fazer isso?
|
 |
|
|
minha aplicação usa a internacionalização do mentawai. indico na tela de login qual idioma.
Gostaria de dentro da aplicação (depois de me logar) também poder alterar o idioma. Até aí tudo bem. Uso uma actiom pra isso. Porém eu indico para essa action (LocaleAction) o retorno, que é uma página de boas vindas.
Como faço para retornar para a mesma página que o usuário estava antes de invocar a action?
|
 |
|
|
1. Pablo Faria
2. Mais ou menos 3 anos
3. Um ano e meio
4. nenhum
5. A capacidade de se criar filtros customisados muito facilmente e poder usar os já criados pela equipe (IOC é o meu preferido)
6. Nenhuma
7. algumas tags, como o paginator
8. Acredito que o framework esteja muito bom, mais na minha opinião o mentawai poderia abolir algumas configurações, tratar mais especificações do que configuração, como o rails faz, isso concerteza ajudaria e muito. (Ex.: nar precisar mapear alguma action, nem template, esse tipo de coisa que seria opicional se usar....)
|
 |
|
|
Cara, nem idéia não, tenta dar uma debuga e dar mais detalhes do que está acontecendo.
Justamente.. Debuguei e na classe JpaTransaction a variável de instância "session" que é um "EntityManager" vem null e por isso ocorre o erro...
JPA não depende do hibernate, tanto que a implementação de referência do JPA é o TopLink da oracle.
Sim ele não depende, mais eu o uso como implementação e gostaria de usar no mentawai também
talvez essa linha não esteja legal:
di("session", EntityManager.class);
Mais como seria a implementação correta?
|
 |
|
|
to tentando passar o projeto news-persistent(dos exemplos não oficiais), para usar o filtro do JPA e controlar as transações igual ao hibernate, só que depois de trocar a codificação ele ne retorna um erro quando vou acessar a aplicação:
Code:
HibernateTransaction does not have a hibernate session!
O meu ApplicationManager:
Code:
import javax.persistence.EntityManager;
import org.mentawai.core.ActionConfig;
import org.mentawai.core.Context;
import org.mentawai.core.Forward;
import org.mentawai.core.Redirect;
import org.mentawai.example.news.HibernateNewsDAO;
import org.mentawai.example.news.News;
import org.mentawai.example.news.NewsAction;
import org.mentawai.example.news.NewsServiceImpl;
import org.mentawai.example.news.NewsValidationFilter;
import org.mentawai.filter.DIFilter;
import org.mentawai.filter.InjectionFilter;
import org.mentawai.filter.IoCFilter;
import org.mentawai.filter.JpaFilter;
import org.mentawai.filter.OutputFilter;
import org.mentawai.filter.TransactionFilter;
import org.mentawai.filter.VOFilter;
import org.mentawai.i18n.LocaleManager;
import org.mentawai.transaction.JpaTransaction;
public class ApplicationManager extends org.mentawai.core.ApplicationManager {
public void init(Context context) {
ioc("newsService", NewsServiceImpl.class);
ioc("newsDAO", HibernateNewsDAO.class);
ioc("transaction", JpaTransaction.class);
}
public void loadActions() {
addGlobalFilter(new IoCFilter());
addGlobalFilter(new JpaFilter("punit"));
addGlobalFilter(new DIFilter());
di("session", EntityManager.class);
di("newsDAO", HibernateNewsDAO.class);
addGlobalFilter(new TransactionFilter());
addGlobalFilter(new InjectionFilter());
addGlobalFilter(new OutputFilter());
ActionConfig actionConfig = new ActionConfig("news", NewsAction.class);
actionConfig.addConsequence(NewsAction.LIST_JSP, new Forward("/list.jsp"));
actionConfig.addConsequence(NewsAction.LIST, new Redirect("news.mtw"));
actionConfig.addConsequence(NewsAction.SHOW, new Forward("/update.jsp"));
actionConfig.addFilter(new NewsValidationFilter(), "update");
actionConfig.addFilter(new NewsValidationFilter(), "add");
actionConfig.addConsequence(NewsAction.ERROR, "add", new Forward("add.jsp"));
actionConfig.addConsequence(NewsAction.ERROR, "update", new Forward("update.jsp"));
actionConfig.addFilter(new VOFilter(News.class, "news"));
add(actionConfig);
}
public void loadLocales() {
LocaleManager.add("en");
LocaleManager.add("pt");
}
}
alguém pode me dar uma luz?
|
 |
|
|
Existe uma maneira de uma action ou uma inner action não retornarem nenhum Forward ou Redirect? Apenas fazer um processamento.
Estou usando Flex e gostaria de integrar ao Mentawai...
|
 |
|
|
Nas páginas jsps se eu colocar um filtro de autorização, se o acesso estiver negado, é redirecionado para uma página de acesso negado ex.: denied.html.
Mas e usando templates???
Já tentei e o que acontece é a página em questão ficar em branco, (atende as nessecidades de segurança), mais não é redirecionada para o denied.html por exemplo.
A pergunda é a seguinte: Usando templates tem como criar um acessonegado.page e restringir o acesso na page???
Att
|
 |
|
|
Mais é isso que quero, quanto a sessão expirar, isso fica por conta do tomcat.
|
 |
|
|
Caras valeu mesmo pela ajuda.
Consegui resolver
fiz o seguinte (se puder ajudar alguém depois, por isso resolvi postar)
Minha classe
Code:
package com.eclinica.util;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.mentawai.core.Context;
import com.eclinica.pessoa.model.Usuario;
public class CentralDeUsuarios {
private static ArrayList<Usuario> usuarios = new ArrayList<Usuario>();
private static Map<String, Context> idSessions = new HashMap<String, Context>();
public static void add(Usuario u, Context e) {
usuarios.add(u);
idSessions.put(u.getPessoa().getNome(), e);
}
public static void remove(Usuario u) {
if (u != null) {
usuarios.remove(u);
}
}
public static int qtdUsuariosLogados() {
return usuarios.size();
}
public static ArrayList getUsuariosLogados() {
return usuarios;
}
public static void derrubaSessao(String id){
Iterator it = idSessions.keySet().iterator();
while (it.hasNext()){
String chave = (String) it.next();
if (chave.equals(id)){
Context c = idSessions.get(chave);
c.reset();
}
}
}
}
Quando quero derrubar a sessão de alguém chamo o método derrubaSessao(String id) com o nome do usuário
|
 |
|
|
|
Cara, eu armazeno os ids das sessions em um xml, mais não sei como derrubar.
|
 |
|
|
Tem como derrubar uma sessão específica usando código, algo como um id do HttpSessionEvent ou alguma coisa do tipo.
Ex.: Tenho um controler de usuários, onde vejo quem está logado ou não no sistema, quero derrubar a sessão de um deles (aleatorio).
|
 |
|
|
Tem como chamar uma áction de outra???
Se tiver acho que também resolve meu problema!!
Att
|
 |
|
|
Quero fazer o seguinte:
Quando a sessão do usuário encerrar ou ele fechar o browser
a action de logout ser chamada
Tenho a minha actiom de Logout
Code:
package com.frameworkpj.acesso;
import org.mentawai.core.BaseAction;
import com.frameworkpj.usuarios.CentralDeUsuarios;
import com.frameworkpj.usuarios.UsuarioUtil;
public class ActionLogout extends BaseAction{
protected void logout() {
session.reset();
}
public String execute() throws Exception {
UsuarioUtil u = (UsuarioUtil) session.getAttribute("user");
CentralDeUsuarios.remove(u);
logout();
return SUCCESS;
}
}
E tenho meu Servlet de controle de sessão
Code:
package com.frameworkpj.session;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
public class SessionControler implements HttpSessionListener{
private static int activeSessions = 0;
public void sessionCreated(HttpSessionEvent arg0) {
activeSessions++;
}
public void sessionDestroyed(HttpSessionEvent arg0) {
activeSessions--;
//aqui quero chamar a action de logout!!!
}
}
Se puderem me ajudar
|
 |
|
|